ASP.NET CheckBox в 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?

2 ответа

Решение

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

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

Другие вопросы по тегам