0 Comments

深入剖析微软ASP.NET Ajax中的数据绑定架构上篇之

发布于:2013-10-22  |   作者:广州网站建设  |   已聚集:人围观
(一)ItemView控件
有时,我们需要向用户显示一个关于我们的集合项的详细视图,例如在一个购物应用程序中显示关于你的产品的细节信息。MS AJAX客户端控件ItemView控件能够帮助你实现这一特征,类似于ASP.NET服务器控件DetailsView对应的行为,但是它完全运行于客户端。该ItemView类以及ListView类都派生自基类—Sys.UI.Data.DataControl。
事实上,在命名空间Sys.Preview.UI.Data中存在若干客户端控件,例如DataControl(ItemView和ListView的父类),DataNavigator,ItemView,ListView,XSLTView等。
在此,我们仅关注两个控件—ItemView和ListView。注意,在开发中,类似于ASP.NET服务器控件GridView相对于ObjectDataSource,MS AJAX中的客户端控件ItemView(或ListView)正对应于DataSource。下列表格列出ItemView控件常用的和自定义的属性。

属性名 描述
id 标识ItemView控件。
canMoveNext 如果还存在下一条记录,则为true;否则为false。
canMovePrevious 如果还存在前一条记录,则为true;否则为false。
data 存储所有的加载到当前ItemView控件中的Sys.Preview.Data.DataTable对象—这些DataTable对象都是通过DataSource控件从后台获取的。
dataIndex 标识当前记录的索引号。
dataItem 基于dataIndex返回当前记录。
length 返回的记录总数。
itemTemplate 这个模板用于渲染列表中的单个项(例如使用一个<tr>标签)。它必须位于layoutTemplate模板内。
EmptyTemplate 这个模板用于当数据源中没有数据项时(或该ItemView仍然等待来自于服务器端的数据时)生成一个空消息。

ItemView控件中的常用方法

方法名 描述
addItem 把一个新项添加到客户端数据集合中,并且这个操作将使dataset变“脏”
deleteCurrentItem 从客户端数据集合中删除当前项,这个操作也将使dataset变“脏”
moveNext 移动到下一条记录,这个操作将再次触发定义于ItemTemplate中的控件的数据绑定
movePrevious 移动到前一条记录,这个操作也将再次触发定义于ItemTemplate中的控件的数据绑定

请注意上面所有的操作都发生于客户端—在此仅修改了客户端数据。因此,如果你想把所作的改变提交(保存)到服务器,那么,你必须调用DataSource控件中的相应方法。
显然,该ItemView总是用于在客户端显示一个记录,而接下来要讨论的ListView控件则用于列出符合某些条件的记录。
(二)ListView控件
类似于ASP.NET的GridView服务器控件,MS AJAX的ListView控件也提供了AJAX方式的客户端实现。尽管你可以使用传统型ASP.NET 2.0 GridView服务器控件,然后简单地添加一个MS AJAX UpdatePanel控件以便让你的GridView工作于AJAX方式,但是这种方法的效率并不高而且并非“纯”MS AJAX实现。因此,我们可以使用完全基于客户端的MS AJAX控件ListView来实现这一过程,并且效果更好。不必担心,ListView控件的操作十分类似于GridView提供一系列相关概念。但是注意,因为目前还没有针对这些内容的智能感知支持的IDE,所以,你必须十分细致地分析本文所附实例中的源码。
【作者注】在微软最新的Visual Studio "Orcas"中已经提供了对MS AJAX开发中的Javascript编程的智能感知支持。
广州网站建设,网站建设,广州网页设计,广州网站设计
标签:
飞机