代码之家  ›  专栏  ›  技术社区  ›  Frinavale

在模板项中绑定复选框的选中属性

  •  11
  • Frinavale  · 技术社区  · 15 年前

    在我的生命中,我无法在TemplateField(声明性)中绑定复选框控件的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 回复  |  直到 15 年前
        1
  •  18
  •   keyboardP    15 年前

    可能是因为你用了双引号。尝试:

    checked= '<%# Eval("Deactivated") %>'
    
        2
  •  3
  •   Ryan    15 年前

    在属性值周围使用单引号:

    <asp:CheckBox ID="deactivated" runat="server" checked='<%#Eval("Deactivated")%>'></asp:CheckBox>

        3
  •  1
  •   Léon Pelletier    11 年前

    最好通过控件的rowdatabound事件(假设它是一个gridview)中的代码隐藏来处理此问题。

    if (e.Row.RowType == RowType.DataRow)
    {
        CheckBox chk = (CheckBox) GridView1.FindControl("deactivated");
        chk.Checked = true;
    }
    

    注意:ABV代码可能包含错误…

    或者,

    以这样的方式检索数据:复选框试图绑定到的特定字段应该是位类型的字段(即它可以有1或0)。

        4
  •  1
  •   Maslow    11 年前

    这是一个很古老的问题,但下面是我在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>
    

    因为我的属性不是布尔值。

        5
  •  0
  •   citronas    15 年前

    eval用于计算表达式。

    尝试绑定。

    checked='<%#Bind("Deactivated")%>'