Question

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.

Était-ce utile?

La solution

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

Autres conseils

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("

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

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

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")%>'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top