Atlas命名空间Sys.Data下控件介绍——DataView和DataFilter

English Version: http://dflying.dflying.net/1/archive/125_introduction_to_atlas_controls_in_namespace_sysdata__dataview_and_datafilter.html

本系列有如下三篇文章:

  1. Atlas命名空间Sys.Data下控件介绍——DataSource和XMLDataSource
  2. Atlas命名空间Sys.Data下控件介绍——DataColumn,DataRow和DataTable
  3. Atlas命名空间Sys.Data下控件介绍——DataView和DataFilter

这篇文章是Atlas命名空间Sys.Data下控件介绍这个系列的第三篇,也是最后的一篇。在我的前两篇文章(Atlas命名空间Sys.Data下控件介绍——DataSourceXMLDataSource Atlas名空间Sys.Data下控件介绍——DataColumnDataRowDataTable)中,我们讨论了如何用数据源控件从服务器取得数据并保存在客户端,以及如何用DataTable对象对客户端的数据进行操作。目前为止,我们可以直接将数据显示给用户了,但是,很多时候我们需要在这之前对数据进行一定的修饰,例如,当DataTable中的数据量很大时,我们需要实现分页的功能,或是用户希望根据某一列进行排序,或者用户只对数据中的某一些感兴趣(例如,name等于Dflying的条目)。这也是Atlas中引入DataView以及DataFilter对象的目的。在这篇文章中,我将介绍如何使用DataViewDataFilter对象修饰取得的数据,以提供给UI控件显示。

DataView对象可以实现分页以及排序的功能,并利用DataFilter对数据进行过滤。下面是DataView对象的属性:

  1. data:储存未被修饰的原数据。您应该总是将用DataSource控件取得的DataTable对象设置给这个属性,以备操作。
  2. filteredData:经过修饰的数据,例如经过分页的数据或者经过过滤的数据。
  3. filters:将要应用到data属性上的DataFilter的集合。您可以指定多个DataFilter对象,它们将被依次应用于原数据上以对其进行过滤。对于DataFilter对象的介绍请参见下文。
  4. hasNextPage:当前页后是否有下一页。
  5. hasPreviousPage:当前页前是否有前一页。
  6. length:当前页中实际的条目数量。
  7. pageCount:当前DataView中的页数。
  8. pageIndex:当前页的索引。
  9. pageSize:每一页的长度(每一页中最多有多少个条目)。如果您需要分页功能,则应该设置这个属性。
  10. sortColumnDataView将依据这个属性中指定的列排序。如果您需要排序功能,则应该设置这个属性。
  11. sortDirection:排序的方向。可选Ascending(默认)或Descending

DataView对象还有下面一个方法:

  1. sort:根据sortColumn属性和sortDirection属性对当前数据集合进行排序操作。

请注意,您可能需要两个位于Sys.Data.UI命名空间的控件:DataNavigatorSortBehavior,来帮助您实现分页和排序的功能。关于DataView以及上述两个控件的介绍以及示例程序,请参考使用 ASP.NET Atlas PageNavigator控件实现客户端分页导航

DataView的介绍就暂到这里,我们来看一下DataFilter对象:

DataFilter用来提供对数据的过滤功能。Atlas中的Sys.Data.DataFilter类被定义成所有Filter类的抽象基类。它提供了一个抽象方法,filter。所有的派生类都要采用自己的逻辑来实现这个方法,用来提供相应的过滤规则。

Atlas提供了一个内建的DataFilterPropertyFilter,它可以根据集合中条目的某个属性值来过滤这个集合。

PropertyFilter有如下两个属性:

  1. property:这个Filter将应用于条目的哪个属性。
  2. value:期待的这个属性的值。只有该条目的这个属性的值等于这里指定的值的时候,该条目才能被这个Filter过滤出来。

PropertyFilter的示例程序将很快完成。

在这个系列的最后,让我们来总结一下Atlas命名空间Sys.Data下的这三类控件。如果您能理解这三类控件,将对您未来的Atlas开发大有裨益。

  1. DataSourceXMLDataSourceAtlas命名空间Sys.Data下控件介绍——DataSourceXMLDataSource),用来从服务器端取得数据并将数据保存在客户端,同样在用户修改后可以将数据提交回服务器保存。
  2. DataTable,包括DataRowDataColumnAtlas命名空间Sys.Data下控件介绍——DataColumnDataRowDataTable),是客户端数据的实际储存对象。通过DataTable的方法,您可以在客户端对数据进行操作(添加,删除,修改等)。
  3. DataViewDataFilter(本文),用来在显示给用户前对数据进行修饰(分页,排序,过滤等),有些类似于SQLwhereorder by子句,当然这些操作都是在客户端发生的,并且不影响实际的客户端数据,同样类似于SQL视图View)的概念。
posted on 2006-04-16 13:57  Dflying Chen  阅读(3894)  评论(21编辑  收藏  举报