2012年6月22日星期五

现在的DataTable慢慢退出历史舞台,主要是原因

1.   List<t>是强类型化的,而DataTable不是一般的DataTable,
访问某列时,是通过string的ColumnName来取得的,
比如:string name = dt.Rows[i][&quot;Name&quot;].ToString();
因为是string的列名,存在记错写错的风险,且编译不检查而List<t>,
因为类型化的元素,编程时属性可以有IDE的智能感知来选择,编码更方便。
不容易出错:string name = list[0].Name;


2.    Linq的强有力支持,使得操作List<t>有前所未有的快感其实在linq出来之前,
还是DataTable用的多,因为要想过滤数据,可以用DataView,DataTable.Select()等方法。
而List<t>只能是自己写循环,麻烦。Linq出来之后,where,join,group by,order by...等等操作,
对于List<t>的查询真是很便利。


3. DataTable的结构远比List<t>要复杂,内存占用量更大。在有变化的场合下,
DataTable里要维护不同RowState的数据(修改前的和现在的),还有Schema数据List<t>就没有这些累赘,更轻快。所以,Linq+List<t>才使得现在大家越来越倾向使用List<t>而不是DataTable

2012年6月17日星期日

asp.net 回车到下一个控件,遇到按钮提交

//实现 jQuery 表单中使用回车在TextBox之间向下移动
<script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script> 
<script type="text/javascript">
    $(document).ready(function () {
        $("input:first").focus(); // TextBox转换成html控件为<input type="text"/> 
        $("input").bind("keydown", function (e) {
            if (e.which == 13) { // 获取Enter键值 
               // e.preventDefault(); // 阻止表单按Enter键默认行为,防止按回车键提交表单 
                var nextIndex = $("input").index(this) + 1;
                $("input")[nextIndex].focus();
                return false; //取消默认的提交行为
            }
        });
        $("#<%=Button1.ClientID%>").click(function () {
           // $("form")[0].submit(); 错误
            $("#myform").submit();    //提交表单
        });
    }); 
</script>