设置复选框“选中”属性格式的ASP中继器(Set CheckBox “Checked” proper

2019-06-27 06:19发布

我在想,如果有可能设置一个复选框的选中属性格式,使用布尔变量形成中继器的数据源?

我尝试过多种方法,但没有任何成功...:

<asp:Repeater ID="rpt" runat="server">
    <itemTemplate> 
       <asp:CheckBox runat="server" CssClass="checkbox"
            Checked="<%#Eval("IsDefault").ToString().ToLower()%>"
            ID="isDefaultCheckBox"/>
    </itemTemplate>
</asp:Repeater>

<asp:Repeater ID="rpt" runat="server">
    <itemTemplate> 
       <asp:CheckBox runat="server" CssClass="checkbox" 
            Checked="<%# DataBinder.Eval(Container.DataItem, "IsDefault")%>" 
            ID="isDefaultCheckBox"/>
    </itemTemplate>
</asp:Repeater>

ISDEFAULT是一类视场:

public bool IsDefault

Repeater的数据源是列表。

Answer 1:

另一种解决方案是处理ItemDataBound事件:

<asp:Repeater ID="rpt" runat="server" OnItemDataBound="rpt_ItemDataBound">
    <itemTemplate> 
       <asp:CheckBox runat="server" CssClass="checkbox" ID="isDefaultCheckBox"/>
    </itemTemplate>
</asp:Repeater>

...

protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    RepeaterItem ri = e.Item;
    var dataItem = ri.DataItem as YourClassOrInterface;
    var isDefaultCheckBox = ri.FindControl("isDefaultCheckBox") as CheckBox;
    isDefaultCheckBox.Checked = dataItem.IsDefault;
}


Answer 2:

我相当肯定,它应该以这种方式工作:

Checked='<%# Bind("IsDefault") %>'

顺便说一句,有一个失踪<你的第一种方法:

Checked="%#Eval...

编辑 :(因为你也编辑你的问题并纠正它)

现在有别的东西错了,你在这里已经连续两次报价:

Checked="<%#Eval("


Answer 3:

老问题,但我使用的东西更简单的解决了这个在我的应用程序:

<asp:CheckBox ID="chkIncludePdf" runat="server" Checked='<%# Eval("DefaultInclude").ToString() == "True" %>' />


Answer 4:

与代码的问题其实是,你是嵌套双引号的事实

Checked="<%# DataBinder.Eval(Container.DataItem, "IsDefault")%>"

应该

Checked='<%# DataBinder.Eval(Container.DataItem, "IsDefault")%>'


文章来源: Set CheckBox “Checked” propery in ASP repeater