DataView.RowFilter 的使用
來源:互聯網
上載者:User
private void MakeDataView(){ DataView dv = new DataView(); dv.Table = DataSet1.Tables["Suppliers"]; dv.AllowDelete = true; dv.AllowEdit = true; dv.AllowNew = true; dv.RowFilter = "City = 'Berlin'"; dv.RowStateFilter = DataViewRowState.ModifiedCurrent; dv.Sort = "CompanyName DESC"; // Simple bind to a TextBox control Text1.DataBindings.Add("Text", dv, "CompanyName");}使用者定義的值可以用在將與列值進行比較的運算式內。字串值應放在單引號內。日期值應放在磅符號 (#) 內。對於數值,允許使用小數和科學記號標記法。例如: "FirstName = 'John'" "Price <= 50.00" "Birthdate < #1/31/82#" 對於包含枚舉值的列,將值強制轉換為整數資料類型。例如:"EnumColumn = 5"運算子 使用布爾值 AND、OR 和 NOT 運算子時允許串聯。可以使用括弧來組合子句和強制優先順序。AND 運算子優先於其他運算子。例如: (LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'在建立比較運算式時,允許使用下列運算子: <><=>= <> = INLIKE在運算式中還支援下列算術運算子:+(加) -(減) *(乘) /(除) %(模數)字串運算子若要連接字串,請使用 + 字元。字串比較是否區分大小寫由 DataSet 類的 CaseSensitive 屬性的值來確定。但是,可以用 DataTable 類的 CaseSensitive 屬性重寫此值。萬用字元在 LIKE 比較中,* 和 % 兩者可以互換地作為萬用字元。如果 LIKE 子句中的字串包含 * 或 %,那麼這些字元應用中括弧([])對其進行轉義。如果子句中有中括弧,那麼中括弧字元應用中括弧對其進行轉義(例如 [[] 或 []])。在模式的開頭和結尾,或者在模式的結尾,或在模式的開頭允許使用萬用字元。例如:"ItemName LIKE '*product*'" "ItemName LIKE '*product'" "ItemName LIKE 'product*'"在字串的中間不允許使用萬用字元。例如,不允許 'te*xt'。父/子關係引用通過在列名稱前面加 Parent,就可以在運算式中引用父表。例如,Parent.Price 引用父表的名為 Price 的列。通過在列名稱前面加一個 Child,就可以在運算式中引用子表中的列。但是,因為子關係可以返回多行,所以必須在彙總函式中包括對子列的引用。例如,Sum(Child.Price) 將返回子表中名為 Price 的列的總和。如果某個表有多個子表,則文法是:Child(RelationName)。例如,如果某個表有兩個子表,它們的名稱分別為 Customers 和 Orders,則 DataRelation 對象被命名為 Customers2Orders,引用將為:Avg(Child(Customers2Orders).Quantity)彙總支援下列彙總類型:Sum(求和) Avg(平均) Min(最小值) Max(最大值) Count(計數)StDev(統計標準差) Var(統計方差)。 RowFilter中的查詢語句與SQL語句中SELECT語句的文法和作用都極為相似,彙總通常沿著關係執行。通過使用上面列出的函數之一和上面“父/子關係引用”中詳述的子表列,來建立彙總運算式。例如: Avg(Child.Price) Avg(Child(Orders2Details).Price)彙總也可以在單個表上執行。例如,若要為名為“Price”的列中的數字建立匯總,就用: Sum(Price)