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? И в любом случае, вы не можете бросить данные в чекбокс.
Флажок всегда ложен по умолчанию, поэтому вам это не нужно.