2011-12-29 82 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