1. 程式人生 > >把Dataset中全為空的列去掉,只留下有資料的列

把Dataset中全為空的列去掉,只留下有資料的列

再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 裡面繫結資料時不要忘了建立列,不然會繫結不上表。