把Dataset中全為空的列去掉,只留下有資料的列
阿新 • • 發佈:2019-01-25
再datatable 中已經讀到資料表,將在griddataview 中顯示,但是有些列資料是全空,我打算把空的去掉。
private void BindDataToSimpleGrid(DataTable dt) { DataTable temp = new DataTable("temp"); for (int i = 0;i<dt.Columns.Count;i++) { bool flage = true; foreach (DataRow row in dt.Rows) { if ( !(row[i] is System.DBNull) && flage == true) //判斷是否一列都為空 { flage = false; temp.Columns.Add(new DataColumn(dt.Columns[i].ToString(), typeof(string))); break; } } } DataRow dr2 = null; foreach (DataRow row in dt.Rows) { dr2 = temp.NewRow(); for (int i = 0; i < temp.Columns.Count;i++) { dr2[i] = row[temp.Columns[i].ToString()]; } temp.Rows.Add(dr2); } for (int i = 0; i < temp.Columns.Count; i++) { simpleGridControl1.AddColumn(new GridControlTextColumn(temp.Columns[i].ToString(), temp.Columns[i].ToString())); } simpleGridControl1.SetDataTable(temp);
flage是為了減少檢查次數,有一個數據就算不為空,注意判斷cell 裡面是否為空用null 好像不管用,要判斷 is system.DBNull 才是有效果的。然後在向dataview 裡面繫結資料時不要忘了建立列,不然會繫結不上表。