1、DataSource ds;
datatable drc;
ds.Tables[2].Merge(drc, false, MissingSchemaAction.AddWithKey);//合併結構相同的倆個datatable(ds.Tables[2]和drc)
drc.Rows.Add(dt.Rows[i].ItemArray);//datatable的drc添加dt.Rows[i]表的i行;
2、C#判斷字符串是否爲空
if (string.IsNullOrEmpty(textBox.Text.Trim()))
{
MessageBox.Show("姓名不能爲空!");
return;
}
3.報表文本框邊框添加
xrTable7.Borders=DevExpress.XtraPrinting.BorderSide.Top;
4、C# DataTable.Select() 篩選數據
有時候我們需要對數據表進行篩選,微軟爲我們封裝了一個公共方法, DataTable.Select(),其用法如下:
Select()
Select(string filterExpression)
Select(string filterExpression, string sort)
Select(string filterExpression,string sort, DataViewRowState record States)
1) Select()——獲取所有 System.Data.DataRow 對象的數組;
2) Select(string filterExpression)——按照主鍵順序(如果沒有主鍵,則按照添加順序)獲取與篩選條件相匹配的所有 System.Data.DataRow 對象的數組;
3) Select(string filterExpression, string sort)——獲取按照指定的排序順序且與篩選條件相匹配的所有System.Data.DataRow 對象的數組;
4) Select(string filterExpression, string sort, DataViewRowState recordStates)——獲取與排序順序中的篩選器以及指定的狀態相匹配的所有。
舉例說明:
有一個用戶表,名稱爲 dtUsers,有id、姓名name、性別sex、年齡age
1.篩選所有的用戶
DataRow[] drs1 =dtUsers.Select();
2.篩選所有性別爲男的用戶
DataRow[] drs2 =dtUsers.Select("sex = '男' ");
3.篩選所有性別爲男且年齡在18歲以上的用戶
DataRow[] drs3 =dtUsers.Select("sex = '男' and age >= 18");
4.篩選所有性別爲男或者年齡在18歲以上的用戶
DataRow[] drs4 =dtUsers.Select("sex = '男' or age >= 18");
5.篩選所有姓“夏”的用戶
DataRow[] drs5 =dtUsers.Select("name like '夏%'");
6.篩選所有18歲以上的用戶且按從大到小的順序排序
DataRow[] drs5 =dtUsers.Select("age >=18","age desc");
7.上面最後一種用法沒試過,有機會再列舉出來。
注意事項
1.上面的Select操作是不區分大小寫的(表字段不敏感,如pl-sql語法),如果需要區分大小寫,需要將DataTable的caseSensitive屬性設爲true,例如上表的
dtUsers.CaseSensitive = true;//區分大小寫
2.今天做開發發現一個問題,那邊是對空白符的篩選無效,即dt.Select("colnume = '' ");經過調試後發現是因爲我的數據源是從數據庫中查詢的,如下(表名dtOriginal):
我在對PRODUCTUNIT列進行篩選的時候,第一行的“製作一部”篩選出了結果,而後面4行並沒有,因爲是數據類型的問題——
解決辦法有兩種,一種是把所有的空白單元格替換成空格字符 ‘’,一種是在數據庫查詢的時候用decode()函數進行替換,例如SELECT DECODE(列名,NULL,'','列本身') FROM 表名(用replace函數在數據庫中替換NULL是無效的)。