学习ASP.NET数据绑定

ZDNet软件频道 时间:2003-05-21 作者:BUILDER.COM |  我要评论(10)
本文关键词:
.NET让整个数据绑定的概念超越了原有简单地把控件附加到数据表格上的概念。这种能力对ASP.NET的开发人员尤其有用,因为这就更多地把他们同应用程序数据访问层的反复无常隔绝起来。
本文译自Builder.com,未经许可请勿转载如果回到Visual Basic的时代,数据绑定(data binding)是一项被遗弃的笨拙编程技术。DAO过分简单和速度缓慢的控件让数据绑定得了个坏名声,许多有经验的开发人员根本就不是用它。当时很普遍的看法是:“真正的程序员不吃蛋奶饼,而他们肯定也不用数据绑定!”

但是有了.NET之后,许多东西都发生了改变,其中一个变化是在快速应用程序开发中用于数据源的绑定控件具有了高效率。事实上,.NET让整个数据绑定的概念超越了原有简单地把控件附加到数据表格上的概念。这种能力对ASP.NET的开发人员尤其有用,因为这就更多地把他们同应用程序数据访问层的反复无常隔绝起来。

数据绑定101:DataSet

用最简单的方式来看,数据绑定牵涉了将ASP.NET的Web控件,例如说ListBox,附加到包含一些数据库数据的DataSet上。ListBox.DataSource属性让你指定控件要绑定的DataSet,而DataBind方法会真正地用数据来填充控件。由于DataSet可以包含多个字段,所以带有单个数据列的控件(ListBoxDropDownList等等)都会公开DataTextFieldDataKeyField属性,这样你就能够分别指定控件将要以文本形式显示的字段名或者用于值的字段名。

Listing A包含了一个简单的例子,它将ListBox绑定到Northwind示例数据库的Categories表格上。在创建了DataSet之后,我用DataSource属性将它绑定到ListBox1。然后把DataTextField属性设置为CategoryName,后者是ListBox1应该显示的字段(它会被用作SelectedItem.Text),把DataKeyField属性设置为CategoryId,这样ListBox1就会把它用作键。(它会被返回为SelectedItem.Value.)。

数据绑定201:数组和集合

好,绑定到DataSet是小孩的把戏。但是如果你所要的数据不在数据库里,那又会怎么样呢?如果你想让用户能够从对象数列里进行选择,那又会怎么样呢?当然,你能够手动创建包含有数据的DataSet,但是这有点像要盖一座大楼,而你所需要的其实是一个工具棚。如果你只需要直接绑定到数组上,这是不是会很好?

事实的确如此,你可以直接绑定到参照类型变量的数组,这正如Listing B。在本文里,我有一个类——DataClass,它公开了两个属性,DescriptionID。我可以创建一个DataClass对象的数组,并将它绑定到ListBox1,这和我在Listing A里对DataSet所做的一样:把DataTextField设置为Description(描述),把DataKeyField设置为ID。

ASP.NET使用实时的Reflection API来检查数组里的对象并找到正确的属性,它然后会把它们载入到ListBox1ListItemCollection里。要注意,ASP.NET会专门去寻找property的成员——公共变量或者函数方法在这里都不起作用。

Listing C说明集合同样能够很好的工作,这其实并不会让你以外,因为我敢肯定到现在这个时候,你应该已经非常了解.NET是如何使用IEnumerable and IEnumerator interfaces to iterate over collections的。如果你碰巧不知道我在说什么,试着看看将ListBox1绑定到CollectionClassListing D,它通过实现IenumerableIenumerator来获得类似集合的迭代能力。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134