对于我的生活,我无法在TemplateField中绑定CheckBox控件的Checked属性(明确地说)。
我试过了:
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="deactivated" runat="server" checked="<%#Eval("Deactivated")%>"></asp:CheckBox>
</ItemTemplate>
<asp:TemplateField>
和
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="deactivated" runat="server" checked="<%#Eval(Container.DataItem, "Deactivated")%>"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
</asp:TemplateField>
我一直在看警告:
无法从'Checked'属性的字符串表示''创建'System.Boolean'类型的对象
我做错了什么?
答案 0 :(得分:18)
可能是因为您使用了双引号。尝试:
checked= '<%# Eval("Deactivated") %>'
答案 1 :(得分:3)
在属性值周围使用单引号:
<asp:CheckBox ID="deactivated" runat="server" checked='<%#Eval("Deactivated")%>'></asp:CheckBox>
答案 2 :(得分:1)
最好通过控件的rowdatabound事件中的代码隐藏来处理这个问题(假设它是一个gridview)。
if (e.Row.RowType == RowType.DataRow)
{
CheckBox chk = (CheckBox) GridView1.FindControl("deactivated");
chk.Checked = true;
}
注意:abv代码可能包含错误......
OR,
以这样一种方式检索数据:复选框试图绑定的特定字段应该是bit类型的字段(即它可以有1或0)。
答案 3 :(得分:1)
这是一个非常古老的问题,但这是我在VS2013中必须做的事情,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
<asp:TemplateColumn ItemStyle-Width="50" HeaderText="Is Verified">
<ItemTemplate>
<asp:CheckBox ID="chkVerified" runat="server" AutoPostBack="true" EnableViewState="true" OnCheckedChanged="chkVerified_CheckedChanged" Checked='<%#DataBinder.GetPropertyValue(Container.DataItem,"IsVerified").ToString()=="0"%>' />
</ItemTemplate>
</asp:TemplateColumn>
因为我的属性不是布尔值。
答案 4 :(得分:0)
Eval用于评估表达式。
尝试绑定。
checked='<%#Bind("Deactivated")%>'