2011-12-29 4 views
1

Я добавил флажок в мой DataTableASP.NET CheckBox в DataTable

Initialization

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

Почему вы хотите добавить флажок в datatable? Если вы хотите сохранить некоторое значение, которое будет использоваться для заполнения 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); 
+0

Можете ли вы предложить мне некоторые фрагменты или обходные пути, чтобы на самом деле это сделать? – rofans91

+0

Я думаю, что это он! Человек с благодарностью даст ему тяжелую попытку! – rofans91

+0

Hey bro thx, но он не работает :( – rofans91

0

Какое значение находится в DataColumn? Похоже, это значение NULL? И так или иначе, вы не можете бросить datacolum в флажок.
Флажок по умолчанию всегда ложный, поэтому вам это не нужно.

+0

Мне также нужна литье, чтобы определить, является ли CheckBox.Checked TRUE или FALSE, а не только для инициализации. И когда я попытался, то было исключено одно и то же исключение. Да, поскольку значение NULL, поэтому мне нужно инициализировать значение .... – rofans91