瞭解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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章