了解DataView类型

在数据库术语中,视图对象(view object)就是指一个表的固定样式的表示。例如,使用Microsoft SQL Server可以对Inventory表创建一个视图,返回的新表中就只包括了指定颜色的车。在ADO.NET中,DataView类型允许您用编程的方式从这个DataTable中提取数据的子集。
保存同一个表的多个视图,其最大好处就是您可以把这些视图绑定到不同的GUI上(比如DataGrid)。例如,可以把一个DataGrid绑定到一个显示Inventory中所有汽车的DataView,而另一个被配置为只显示绿颜色的车。另外,DataTable类型提供了DefaultView属性来返回表的默认DataView。
下面举一个例子。目的就是把当前Windows Forms应用程序的用户界面更新为支持两个附加的DataGrid类型。一个显示Inventory表中符合Make=‘Colt’条件的行。另一个只显示红颜色的车(也就是Color=‘Red’)。图A-17显示了更新后的GUI。
图A-17  创建Inventory表的多个视图
首先需要创建两个DataView类型的成员变量:
public class mainForm : System.Windows.Forms.Form
{
// Views of the DataTable.
DataView redCarsView; // I only show red cars.
DataView coltsView; // I only show Colts.
. . .
}
接下来,假定您有一个新的帮助函数叫做CreateViews(),这个方法可以在DataTable完全构造好后直接调用,如下所示:
protected void btnMakeDataTable_Click (object sender, System.EventArgs e)
{
// Make the data table.
MakeTable();
 
// Make views.
CreateViews();
. . .
}
下面是这个新帮助函数的实现。注意,每个DataView的构造函数被传递了用来构建自定义数据行集的DataTable:
private void CreateViews()
{
// Set the table that is used to construct these views.
redCarsView = new DataView(inventoryTable);
coltsView = new DataView(inventoryTable);
 
// Now configure the views using a filter.
redCarsView.RowFilter = "Color = 'red'";
coltsView.RowFilter = "Make = 'colt'";
 
// Bind to grids.
RedCarViewGrid.DataSource = redCarsView;
ColtsViewGrid.DataSource = coltsView;
}
可以看到,这个DataView类支持一个名为RowFilter的属性,这个属性包含了一个可以提取匹配行的过滤条件字符串。在视图建立好后,就相应设置表格的DataSource属性。就是这样!由于DataGrid可以智能地检测对底层数据源的改变,如果您单击Make Beemers Colts按钮,ColtsViewGrid就会被自动更新。
除了这个RowFilter属性之外,表A-8还描述了其他DataView类的成员。
表A-8  DataView类型的成员
DataView的成员
意    义
AddNew()
往DataView中添加一个新行
AllowDelete
AllowEdit
AllowNew
配置DataView是否允许删除、插入和更新行
Delete()
删除指定索引处的行
RowFilter
获得或设置一个表达式来过滤在DataView中查看到的行
Sort
获得或设置列的排序列以及表的排序顺序
Table
获得或设置源DataTable
文章出自 http://book.csdn.net/bookfiles/156/1001566759.shtml
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值