Welcome

首页 / 软件开发 / .NET编程技术 / ADO.NET 2.0:如何建立一个 DataView

ADO.NET 2.0:如何建立一个 DataView2010-12-11章立民借助于DataView,我们便能够为储存于DataTable中的数据建立不同的视图。比方说,通过DataView,您可以使用不同的排序顺序检视DataTable中的数据, 亦或是根据数据列状态或筛选表达式来筛选DataTable中的资料。重要的是,当 我们需要替DataTable中的数据建立不同的视图而且需要将这些数据绑定到窗体 上的控件时,更需要使用DataView来完成。

DataView提供的是一种动态的数据视图,也就是说,其内容、排序顺序、与 成员会反应出来源DataTable中的任何变更。显然DataView与DataTable.Select 方法有很大的不同,Select方法会根据特定的筛选表达式或排序顺序从数据表中 传回一个DataRow对象数组,而且其成员与排序顺序是静态不变的。正由于 DataView的动态反应特性,因此非常适合用于数据绑定应用程序。

DataView提供您单一数据集合的动态视图,您可以对数据集合套用不同的排 序顺序和筛选条件,此点与SQL Server数据库所提供的视图(View)有点类似。然而,DataView与数据库视图仍然有相当大的差异,因为DataView无法当成数据 表来使用,也无法提供连结数据表的视图。此外,您不仅不能排除来源数据表中 的字段,也不能额外加入来源数据表中不存在的字段(例如:表达式字段)。

您可以采用两种方式来建立一个DataView。第一种方式是使用DataView建构 函式,第二种方式则是建立DataTable之DefaultView属性的一个参考。本文将详 细探讨如何使用这两种方式来建立DataView。

使用DataView建构函式

DataView建构函式共提供下表所示的三个多载版本。

DataView建构函式的多载版本

DataView()
DataView(ByVal table As DataTable)
DataView(ByVal table As DataTable, _
ByVal RowFilter As String, _
ByVal Sort As String, _
ByVal RowState As DataViewRowState)

DataView建构函式的第一个版本表示不使用任何参数来初始化DataView类别 的新执行个体。请注意,如果您采用此版本来建立DataView,必须在建立 DataView对象后先设定Table属性以便决定其来源DataTable,然后才能继续设定 其它属性(RowFilter、Sort…等等)。

以下的程序代码示范如何使用第一个版本的DataView建构函式来建立 DataView对象,以便筛选和排序数据集内之「章立民工作室」数据表的数据列, 并将DataGridView控件绑定至此DataView。我们发现,DataGrid控件只会显示出 女性,并且数据会依姓名的笔画顺序由多至少排列。以下是本范例的程序代码:

SqlDataAdapter1.Fill(Ds章立民工作室, "章立民工作室")
" 建立 DataView 对象
Dim dv As DataView = New DataView

" 由于采用没有任何参数的 DataView 建构函式来建立 DataView 对 象,
" 因此必须先设定 Table 属性以便决定其来源 DataTable
dv.Table = Ds章立民工作室.章立民工作室

" 设定排序顺序以便依姓名的笔画顺序由多至少排列
dv.Sort = "姓名 DESC"

" 设定筛选条件以便只显示出女性
dv.RowFilter = "性别 = "女""

" 将 DataGridView 控件绑定至 DataView
DataGridView1.DataSource = dv