是否有可能从DetailsView中的CheckboxField中提取Checked状态?

时间:2011-12-02 17:24:26

标签: c# asp.net detailsview

最初我有一个带有CheckBox的TemplateField,但我无法使用

设置复选框值
Checked='<%# (bool)Bind("FieldName")  %>

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

它不断抛出无效的强制转换异常。数据库中的字段是位字段设置为1或0。

我尝试切换到复选框字段,但因为我的更新代码在代码隐藏中而不是在数据源中使用updatecommand参数,所以我似乎无法从CheckBoxField中检索值以传递给我的业务逻辑。 / p>

任何人都可以指出如何从详细信息视图中的CheckBox字段中检索值吗?

3 个答案:

答案 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