asp.net GridView在Dynamic GridView中将Yes / No替换为Checkboxes

时间:2011-04-18 14:57:53

标签: asp.net gridview boolean checkbox

我有一个gridview,显示自定义查询的结果。列数未知,并且绑定的DataTable是否包含布尔列是未知的。包含布尔值的列标题也是未知的。

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

对于预定义列,这看起来非常简单,但在这种情况下并非如此。

1 个答案:

答案 0 :(得分:0)

我在发布问题后不久就找到了解决方案。我最终做的是:

  • 使用string类型
  • 的每一列创建一个包含DataTable的克隆
  • 遍历每个项目数组(object [])以搜索“True”和“False”,并分别替换为“Yes”和“No”,
  • 创建一个新的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);
        }

此概念也应适用于类似的DataTable文本转换。