Можно ли извлечь состояние Checked из CheckboxField в DetailsView? - PullRequest
2 голосов
/ 02 декабря 2011

Изначально у меня был TemplateField с CheckBox, но я не мог установить значение флажка с помощью

Checked='<%# (bool)Bind("FieldName")  %>

или

Checked='<%# (bool)Eval("FieldName")  %>

Он продолжал выдавать недопустимое исключение приведения. Поле в базе данных является битовым полем, установленным в 1 или 0.

Я попытался переключиться на поле флажка, но, поскольку мой код обновления находится в кодовой области вместо использования параметров команды update в источнике данных, я не могу получить значение из CheckBoxField для передачи в мою бизнес-логику.

Может ли кто-нибудь указать мне, как извлечь значение из поля CheckBox в подробном представлении?

Ответы [ 3 ]

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

Вы не можете разыгрывать от int до bool. Попробуйте Convert.ToBoolean(Eval("FieldName")) Не уверен, что вы можете использовать Eval таким образом, но это общая идея.

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

Я думаю, что вам нужно использовать ToString() для значения из базы данных, так как HTML ищет True или False, а не 1 или 0.

0 голосов
/ 02 декабря 2011

Не могли бы вы использовать

CheckBox ckBox = ucDetailView.FindControl("CheckBoxID") as CheckBox
if(ckBox != null){
   ckBox.Checked = (bool)datasource["FieldName"].ToString()
   //.. or some better casting code with more null checks
}

Затем установите его оттуда в коде позади.Решение, похоже, работает здесь

...