asp.net GridView替换动态GridView中的是/否复选框

asp.net GridView替换动态GridView中的是/否复选框

问题描述:

我有一个显示自定义查询结果的gridview。列数是未知的,并且绑定的DataTable是否包含布尔列是未知的。包含布尔值的列的标题也是未知的。asp.net GridView替换动态GridView中的是/否复选框

事先不知道这些信息,有没有办法可以用简单的Yes/No替换复选框?

对于预定义列,这看起来相当简单,但在这种情况下并不多。

我在发布问题后不久就想出了一个解决方案。我落得这样做是:

  • 类型为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); 
     } 

这个概念应该是适用于类似数据表中的文本转换为好。