最初我有一个带有CheckBox的TemplateField,但我无法使用
设置复选框值Checked='<%# (bool)Bind("FieldName") %>
或
Checked='<%# (bool)Eval("FieldName") %>
它不断抛出无效的强制转换异常。数据库中的字段是位字段设置为1或0。
我尝试切换到复选框字段,但因为我的更新代码在代码隐藏中而不是在数据源中使用updatecommand参数,所以我似乎无法从CheckBoxField中检索值以传递给我的业务逻辑。 / p>
任何人都可以指出如何从详细信息视图中的CheckBox字段中检索值吗?
答案 0 :(得分:1)
我认为您需要对数据库中的值使用ToString()
,因为HTML正在查找True或False,而不是1或0。
答案 1 :(得分:1)
你不能从int转换为bool。试试Convert.ToBoolean(Eval("FieldName"))
不确定你是否可以使用Eval
,但这是一般的想法。
答案 2 :(得分:0)
你能用
吗?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
}
然后在代码后面设置它。解决方案似乎有效here