DataTable中的ASP.NET CheckBox

时间:2011-12-29 08:44:39

标签: c# asp.net checkbox datatable datacolumn

我在我的数据表中添加了一个复选框

初​​始化

 DataTable dt = new DataTable();
 DataRow dr = null;

添加复选框

dt.Columns.Add(new DataColumn("CheckBoxCol", typeof(CheckBox)));

添加此新行

dr = dt.NewRow();

当我尝试初始化新行的复选框的初始状态时出现问题

((CheckBox)dr["CheckBoxCol"]).Checked = false;

有异常抛出说:

  

无法将类型为“System.DBNull”的对象强制转换为   * 'System.Web.UI.WebControls.CheckBox'。*

我的方法错了吗?有人可以建议如何将DataColumn转回到CheckBox吗?

2 个答案:

答案 0 :(得分:1)

为什么要在数据表中添加复选框? 如果要存储一些值(用于填充CheckBox),则建议您将值存储为Bool。

即使你想将checkBox存储在datacolumn中,你也必须这样做

 DataTable dt = new DataTable();
 dt.Columns.Add(new DataColumn("Check", typeof(System.Web.UI.WebControls.CheckBox)));
 DataRow dr = dt.NewRow();
 CheckBox ck = new CheckBox();
 ck.Checked = true;
 dr["Check"] = ck;
 dt.Rows.Add(dr);

由于列将存储引用类型,因此首先必须创建它的实例,设置其值,然后将其存储在DataColumn中。

如果您只是使用OneColumn DataTable。我建议你使用更有意义的List<CheckBox>

 List<CheckBox> checkBoxList = new List<CheckBox>();
        CheckBox ck = new CheckBox();
        ck.Checked = true;
        checkBoxList.Add(ck);

答案 1 :(得分:0)

DataColumn中有什么价值?听起来像是NULL值?无论如何,你不能将数据存储到复选框 默认情况下,复选框始终为false,因此您不需要。