GridView的DataSourceID vs. DataSource属性

来源:互联网 发布:有没有发型设计软件 编辑:程序博客网 时间:2024/05/16 08:00
 GridView在绑定数据源方面同时支持DataSourceID与DataSource这两种属性,除了像DataGrid 1.0版原本的DataSource属性外,又增加另外一个DataSourceID属性,这两者之间有什么差别呢?以下是说明。

DataSourceID:这个新属性是用于专门搭配ASP.NET 2.0的DataSource控件,如SqlDataSource、AccessDataSource等等,若GridView以DataSourceID指定DataSource控件就能够享有内置的分页、排序、更新、删除,一行程序都不必写,甚至连GridView.DataBind()都可以免了,因为它会自动做Binding操作,好处多多,故ASP.NET 2.0的数据绑定应该优先使用此属性。

DataSource:这是以前就存在的属性,若GridView使用这个属性来绑定数据,那很抱歉不但要明确声明GridView.DataBind(),并且无法享受内置分页、排序、更新、删除的好处,请自己慢慢Coding吧!

 警告

(1)如果使用GridView通过DataSourceID绑定到数据源控件(如SqlDataSource等),您还是习惯性地下GridView.DataBind()指令进行数据绑定操作,结果会发生什么事情呢?这样会造成“重复绑定”,也就是您要多浪费一次系统绑定性能与内存,故不可不慎呀!

(2)不可以同时设置DataSource及DataSourceID两个属性,否则会产生Exception异常错误。

相较于GridView控件的优秀,DataGrid是否有时不我予之感呢?情况的确如此,在默认工具箱中根本看不到DataGrid影子,但它并不是被.NET 2.0废除掉了,而是没有加入工具箱菜单之中,因为微软希望您优先使用GridView,但还是可以自行将它加入工具箱之中,眼尖的朋友从图9-6中会发现DataGrid控件的版本为2.0,没错它正是2.0版!也支持DataSourceID属性,若搭配DataSource控件也同样享有自动DataBinding的好处,但是无法像GridView可以享有全部自动化Code Free功能。虽然GridView是长江后浪推前浪,但我给DataGrid的评语是:“老而未朽!”放眼望去ASP.NET 1.0许多旧系统哪儿没有DataGrid影子,要废掉或重新改写谈何容易,谁又有那么多时间呢,结论是DataGrid仍有其存在与维护的价值。

注:

GridView或DataGrid的“DataSourceID属性”之所以会有ID字眼,其实是指Data Source控件的ID,下一章的动态程序篇范例皆会用到,届时各位即可了解