在TemplateItem中绑定CheckBox的Checked属性

时间:2010-01-20 18:39:51

标签: asp.net data-binding gridview checkbox templatefield

对于我的生活,我无法在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'类型的对象

我做错了什么?

5 个答案:

答案 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")%>'