DataView.RowFilter篩選DataTable中的數據


//定義一個DataView ,得到一個全部職員的視圖
DataView dataView1 = DbHelperSQL.QueryDataView(sql);

//過濾得到一個只顯示男職員的視圖 
dataView1.RowFilter = " sex='男' ";

//放棄過濾,現在仍然能夠得到一個全部職員的視圖
dataView1.RowFilter = null;

//現在過濾得到一個只顯示女職員的視圖 
dataView1.RowFilter = " sex='女' ";

//獲取性別字段為空的職員
dataView1.RowFilter = " sex is null ";
//或者
dataView1.RowFilter = " Isnull( sex, 'Null Column') = 'Null Column' ";

//獲取時間為空(NULL)和非空的視圖
dataView1.RowFilter = " AddTime is null ";//空
dataView1.RowFilter = " AddTime is not null ";// 非空
//或者這里也可以先用Convert將日期時間(DateTime)字段轉為字符串,然后做空值比較
dataView1.RowFilter = " Isnull( Convert(AddTime, 'System.String'),'Null Column') = 'Null Column' "; //空
dataView1.RowFilter = " not ( Isnull( Convert(AddTime, 'System.String'),'Null Column') = 'Null Column' ) "; // 非空

DataTable dt = DataView.ToTable();正確的。

DataTable dt = DataView.Table; 獲取的是原來構造DataView的那個原表(沒有過濾之前的那個表)。

重點在於DataView是DateTable相關聯 的一個視圖而已,無論你如何使用RowFilter,DataView雖然被改變,但 DateTable數據不會減少,所以你不要幻想連續使用多個RowFilter 來得到疊加過濾的效果,一個DataView只支持一個RowFilter,你只能使用 not ,and 來連接多個過濾條件。

--------------------------------------------------------------------------------------------------------------------------

若要形成 RowFilter 值,請指定列的名稱,后跟一個運算符和一個要篩選的值。 該值必須用引號括起來。 例如:

"LastName = 'Smith'"

若要只返回那些具有 null 值的列,請使用以下表達式:

"Isnull(Col1,'Null Column') = 'Null Column'"

下面的示例創建 DataView 並設置它的 RowFilter 屬性。

private void MakeDataView()  
{
DataView view = new DataView();
view.Table = DataSet1.Tables["Suppliers"];
view.AllowDelete = true;
view.AllowEdit = true;
view.AllowNew = true;
view.RowFilter = "City = 'Berlin'";
view.RowStateFilter = DataViewRowState.ModifiedCurrent;
view.Sort = "CompanyName DESC";
// Simple-bind to a TextBox control

Text1.DataBindings.Add("Text", view, "CompanyName");
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM