2011-12-29 64 views
1

我添加了一个复选框到我的DataTableASP.NET复选框DataTable中

初始化

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?

回答

1

为什么要将复选框添加到数据表? 如果你想存储一些值,这将用于填充一个CheckBox,然后建议你将值存储为Bool。

即使你想存储在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); 
+0

你能建议我一些片段或解决方法来实际做到吗? – rofans91 2011-12-29 09:01:44

+0

我认为这就是它!谢谢你的人会努力尝试! – rofans91 2011-12-29 09:05:32

+0

嗨兄弟thx,但它不工作:( – rofans91 2011-12-29 09:14:04

0

DataColumn中的值是什么?听起来像是一个NULL值?无论如何,你不能将一个datacolum投射到复选框。
缺省情况下,复选框始终为false,因此您不需要该选项。

+0

我还需要铸造来确定CheckBox.Checked是TRUE还是FALSE,不仅用于初始化。当我尝试时,同样的异常被抛出。是的,因为值为NULL因此我需要初始化值.... – rofans91 2011-12-29 08:50:12