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.
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;
}
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")%>'