ASP.NET CheckBox в DataTable - PullRequest
       56

ASP.NET CheckBox в DataTable

1 голос
/ 29 декабря 2011

Я добавил флажок в свою таблицу данных

инициализация

 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 ]

1 голос
/ 29 декабря 2011

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

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

...