今天看到MSDN上的这篇文章,介绍asp.net2.0的新的数据控件DataView。asp.net1.x的DataGrid在简单快速显示数据列表方面很方便,如果考虑界面外观就不好控制了,仍然需要写大量的代码,有时候还出现一些莫名其妙的问题,http://qingyang.cnblogs.com/archive/2006/01/03/310289.html,所以许多时候选择Repeater,宁愿多写些代码。文中提到在asp.net2.0中,所有控件无论有什么样的实际实现过程和用户界面特点,均从同一个基类(BaseDataBoundControl 类)派生。右图显示新的类关系图。但是除了新加入的GridView和Menu控件,其他几个数据列表控件还是和asp.net1.x一样的控件继承树。不过Repeater已改为继承于WebControl,那就是说同时也继承了WebControl的样式和属性,那么Render的时候是不是会生成一些html的元素呢?文中还提到:GridView 控件也支持传统的基于 DataSource 属性和 DataBind 方法的绑定机制。尽管完全支持这种绑定机制,但是不鼓励使用这样的编程实践方法。.net2.0 框架提供了一个新的数据源控件,这个数据源控件就是一组.NET Framework 类,它有利于数据存储和数据绑定控件之间的双向绑定,很显然这个控件提供了选择、插入、更新和删除的主要数据操作功能,下图说明了这些流程关系。 |
这个数据源控件在数据绑定控件和数据源之间形成一个中间层,也公开一个提供基本操作的公共接口
IDataSource,对数据源的操作通过这个控件的SelectCommand、UpdateCommand、InsertCommand 和 DeleteCommand 属性结合来完成,GridView 为这些事件定义内部的处理程序。
ConnectionString ="SERVER=(local);DATABASE=northwind;Integrated Security=SSPI;"
SelectCommand ="SELECT * FROM employees WHERE employeeid > @MinID" >
< SelectParameters >
< asp:ControlParameter Name ="MinID"
ControlId ="EmpID"
PropertyName ="Text" />
</ SelectParameters >
</ asp:SqlDataSource >
但是在复杂的数据操作时仍然需要编写代码。同时数据量和访问量很大的时候性能怎样?这仍然是个值得关注的问题。
在GridView对象模型里里有个很值得体验的新特性--使用一个基于回调的轻量型机制来进行排序和分页,通过设置 EnableSortingAndPagingCallbacks 布尔属性来开启和关闭此功能。当单击排序或分页链接来启用回调时,GridView 请求排序数据或下一页,不回发可视页面。这里发生了一个往返过程,但是无页面刷新。并且只需通过开启 AllowPaging 和 AllowSorting 属性就能启用自动翻转排序和分页功能。这个排序是单页排序还是整个数据源排序?这是个很不错的用户体验。在asp.net1.x里,如果要在DataGrid里放入RadioButton,CheckBox需要写大量的代码,GridView已经实现了这样的功能,并且改进了HyperLinkField 的Url多参数问题。另外有趣的是ImageField,它通过 ASP.NET 2.0 DynamicImage 控件显示来自数据库和 URL 两者的图像。而且,在编辑模式下,ImageField 列弹出一个 Browse 按钮,用于定位要上载的位于本机的新文件。数据绑定表达式的语法更简洁,只需调用Page类定义的新的Eval保护方法,并且只需传入一个数据字段名的字符串参数。从表面上看,这些似乎只是简化了程序员的工作,这些功能在1.x里都可以实现,只是需要编写大量代码。
asp.net2.0在服务器控件上做了大量改进,数据绑定控件语法更简单但功能更强大。正如文中所说:理想的情况是,它们应该以很少的单击操作以及有限的代码数量提供高级的功能。但是如果是复杂的页面交互、更复杂的数据操作这些控件还是不能满足,需要编写大量的代码。
MSDN中文站里VS2005 Team System with MSDN 的促销活动搞得如火如荼,但一直没看到发布简体中文版的任何消息。中文版的MSDN要到什么时候才有啊?期待......