——此文章摘自《C#高級編程(第
版)》定價
元 特價
元 購買
DataView提供了一種過濾和排序DataTable中數據的一種方式在從數據庫中選擇數據時用戶一般可以單擊列標題對數據排序此外還可以只過濾要顯示在某些行中的數據例如用戶修改過的所有數據DataView允許限制要顯示給用戶的數據行但不允許限制DataTable中的數據列
提示DataView不允許修改要顯示的數據列只允許修改要顯示的數據行
本章後面的DataGridTableStyle和DataGridColumnStyle一節將介紹一個示例說明如何限制要顯示的數據列
根據現有的DataTable創建DataView的代碼如下所示DataView dv = new DataView(dataTable);
創建好後就可以改變DataView上的設置當該視圖顯示在DataGrid中時這些設置會影響要顯示的數據以及允許對這些數據進行的操作例如
● 設置 AllowEdit = false表示在數據行上禁用所有列的編輯功能
● 設置AllowNew = false 表示禁用新行功能
● 設置 AllowDelete = false表示禁用刪除行的功能
● 設置 RowStateFilter只顯示指定狀態的行
● 設置 RowFilter 可過濾數據行
● 按照給定的列排序
下一節將介紹使用RowStateFilter設置其他選項都是可以自我解釋的
() 通過數據過濾數據行
創建好DataView後就可以通過設置RowFilter屬性來改變視圖中的數據這個屬性是一個字符串可用作按照給定條件過濾數據的一種方式—— 該字符串的值就是過濾條件其語法類似於一般SQL中的WHERE子句但主要是對已經從數據庫中選擇出來的數據進行操作過濾子句的一些示例如表所示
子 句
說 明
UnitsInStock >
只顯示UnitsInStock列大於的行
Client = Smith
只返回給定客戶的記錄
County LIKE C*
返回County字段以C開頭的所有記錄—— 例如返回Cornwall CumbriaCheshire和 Cambridgeshire所在的行可以使用%表示匹配一個字符的通配符而*表示匹配個或多個字符的通配符
表
運行環境盡可能在過濾表達式中使用與源列相匹配的數據類型例如在前面的示例中使用UnitsInStock > 表達式就是合法的盡管該列是一個整數列但如果提供了一個無效的過濾字符串就會產生EvaluateException
() 根據狀態過濾數據行
DataView中的每一行都有一個定義好的行狀態它們的值如表所示這些狀態也可以用於過濾用戶查看的行
DataViewRowState
說 明
Added
新創建的所有行
CurrentRows
除了被刪除的行以外的其他行
Deleted
最初被選中且已經刪除的行—— 不顯示已經刪除的新建行
ModifiedCurrent
列出所有已被修改的行並顯示這些行的當前值
ModifiedOriginal
列出所有已被修改的行但顯示這些行的初值而不是當前值
OriginalRows
最初從數據源中選中的所有行不包括新行顯示列的初值(即如果進行了修改不顯示當前值)
Unchanged
沒有修改的行
表
[] []
From:http://tw.wingwit.com/Article/program/net/201311/14731.html