使用 DataView 對數據排序和篩選

使用 DataView 對數據排序和篩選

DataView 提供了幾項用於對 DataTable 中的數據進行排序和篩選的功能:

  • 使用 Sort 屬性,您可以指定單個或多個列排序順序幷包含 ASC(升序)和 DESC(降序)參數。
  • 可以使用 ApplyDefaultSort 屬性自動以升序創建基於表的一個或多個主鍵列的排序順序。只有當 Sort 屬性爲空引用或空字符串時以及表已定義主鍵時,ApplyDefaultSort 才適用。
  • 使用 RowFilter 屬性,您可以根據行的列值來指定行的子集。有關 RowFilter 屬性的有效表達式的更多信息,請參見有關 DataColumn 類的 Expression 屬性的參考信息。

    如果要返回對數據的特定查詢的結果(而不是提供數據子集的動態視圖)以實現最佳性能,請使用 DataViewFindFindRows 方法,而不是設置 RowFilter 屬性。設置 RowFilter 屬性會使數據的索引被重新生成,從而增加應用程序的系統開銷並降低性能。最好將 RowFilter 屬性用於其中的綁定控件顯示篩選結果的數據綁定應用程序。FindFindRows 方法會利用當前的索引,而不需要重新生成索引。有關 FindFindRows 方法的更多信息,請參見搜索 DataView。

  • 使用 RowStateFilter 屬性,您可以指定要查看的行版本。DataView 根據基礎行的 RowState 來隱式地管理要公開哪些行版本。例如,如果 RowStateFilter 設置爲 DataViewRowState.Deleted,由於不存在 Current 行版本,DataView 將公開所有 Deleted 行的 Original 行版本。可以使用 DataRowView RowVersion 屬性來確定要公開行的哪些行版本。

    下表顯示了 DataViewRowState 選項。

    DataViewRowState 說明
    CurrentRows 所有 UnchangedAddedModified 行的 Current 行版本。這是默認選項。
    Added 所有 Added 行的 Current 行版本。
    Deleted 所有 Deleted 行的 Original 行版本。
    ModifiedCurrent 所有 Modified 行的 Current 行版本。
    ModifiedOriginal 所有 Modified 行的 Original 行版本。
    None 沒有行。
    OriginalRows 所有 UnchangedModifiedDeleted 行的 Original 行版本。
    Unchanged 所有 Unchanged 行的 Current 行版本。

有關行狀態和行版本的更多信息,請參見行狀態與行版本。

以下代碼示例創建一個視圖,該視圖顯示所有庫存量小於或等於再訂購量的產品,這些產品首先按供應商 ID 排序,然後按產品名稱排序。

[Visual Basic]
Dim prodView As DataView = New DataView(prodDS.Tables("Products"), _
                                        "UnitsInStock <= ReorderLevel", _
                                        "SupplierID, ProductName", _
                                        DataViewRowState.CurrentRows)
[C#]
DataView prodView = new DataView(prodDS.Tables["Products"],
                                 "UnitsInStock <= ReorderLevel",
                                 "SupplierID, ProductName",
                                 DataViewRowState.CurrentRows);
 
發佈了2 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章