ASP.. NET复选框中的DataTable

本文关键字:DataTable 复选框 NET ASP | 更新日期: 2023-09-27 18:18:56

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

初始化
 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' to type*"System.Web.UI.WebControls.CheckBox"。*

我的方法错了吗?是否有人建议如何将datacoluml转换回复选框?

ASP.. NET复选框中的DataTable

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

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

 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);

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

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

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

dataccolumn中的值是什么?听起来像是一个NULL值?无论如何,您不能将数据列强制转换为复选框。
默认情况下,复选框总是为false,所以您不需要这样做。