Set CheckBox “Checked” propery in ASP repeater

若如初见. 提交于 2019-12-01 06:09:37

问题


I was wondering if it's possible to set the checked propery of a checkbox, using a bool variable form the repeater's datasource?

I've tried several ways but without any success...:

<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 is a field in a class View:

public bool IsDefault

The repeater's DataSource is List.


回答1:


Another solution is handling ItemDataBound event:

<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;
}



回答2:


I'm fairly sure that it should work this way:

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

By the way, there's a missing < in your first approach:

Checked="%#Eval...

Edit: (since you've also edited your question and corrected it)

Now there's something else wrong, you've two consecutive quotes here:

Checked="<%#Eval("



回答3:


Old question, but I solved this in my application using something much simpler:

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



回答4:


The problem with the code is actually the fact that you are nesting double quotes

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

should be

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


来源:https://stackoverflow.com/questions/12073670/set-checkbox-checked-propery-in-asp-repeater

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!