2011-04-18 78 views
2

我有一個顯示自定義查詢結果的gridview。列數是未知的,並且綁定的DataTable是否包含布爾列是未知的。包含布爾值的列的標題也是未知的。asp.net GridView替換動態GridView中的是/否複選框

事先不知道這些信息,有沒有辦法可以用簡單的Yes/No替換複選框?

對於預定義列,這看起來相當簡單,但在這種情況下並不多。

回答

0

我在發佈問題後不久就想出了一個解決方案。我落得這樣做是:

  • 類型爲String的每一列創建一個克隆的數據表,
  • 迭代通過每個項目數組(對象[])搜索「真」與「假」和替換分別爲「是」和「否」
  • 創建一個新的DataRow,將其ItemArray屬性設置爲新的對象數組,並將新的DataRow添加到新的DataTable中。

這裏是它是怎麼做的代碼:

 DataTable Clone = ResultsTable.Clone(); 
     for (int i = 0; i < Clone.Columns.Count; i++) 
     { 
      Clone.Columns[i].DataType = typeof(string); 
     } 

     foreach (DataRow row in ResultsTable.Rows) 
     { 
      DataRow r = null; 
      object[] ItemArray = row.ItemArray; 
      for (int i = 0; i< ItemArray.Length; i++) 
      { 
       if (ItemArray[i].ToString() == "True") ItemArray[i] = "Yes"; 
       if (ItemArray[i].ToString() == "False") ItemArray[i] = "No"; 
      } 

      r = Clone.NewRow(); 
      r.ItemArray = ItemArray; 
      Clone.Rows.Add(r); 
     } 

這個概念應該是適用於類似數據表中的文本轉換爲好。