Groups | Blog | Home
all groups > asp.net building controls > august 2006 >

asp.net building controls : UserControl with databound repeater drops values on postback


paul.hester NO[at]SPAM gmail.com
8/31/2006 9:41:41 PM
Hi all,

I have a user control that contains a repeater that generates a list of
check boxes. The checkboxes render fine, but they don't maintain their
checked state on postback.

I've tried using Page_Load, Page_Init, OnInit, enabling and disabling
viewstate without success. Any help would be appreciated.

Thanks,

Paul

ASCX:

<asp:Repeater ID="countryList" runat="server">
<HeaderTemplate>
<table cellpadding="2" cellspacing="0">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><asp:CheckBox ID="countryID" Value='<%# Eval("CountryID") %>'
runat="server" /></td>
<td><asp:Label AssociatedControlID="countryID" runat="server"><%#
Eval("Name") %></asp:Label></td>
<td><img src="<%# string.Format("/images/flags/{0}.gif",
Eval("CountryID")) %>" height="13" width="24" /></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>

ASCX.CS:

protected void Page_Init(object sender, EventArgs e)
{
// get countries
countryList.DataSource = Country.GetCountries();
DataBind();
}
paul.hester NO[at]SPAM gmail.com
9/1/2006 2:18:18 PM
Hi Teemu,

Thanks for getting back to me. That doesn't work, unfortunately. I can
take all of the code out of the user control and put it in my page and
the checkboxes maintain their values perfectly on postback, but
something about having it in a UserControl stops this from working.

Any help would be appreciated.

Thanks,

Paul

[quoted text, click to view]
Teemu Keiski
9/1/2006 10:21:27 PM
Hi,

you must not run DataBind on every postback in the control since it clears
the selections. And second, you need to do binding in Page_Load inside
if(!IsPostBack check), essentially:

protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
// get countries
countryList.DataSource = Country.GetCountries();
countryList.DataBind();
}
}

If you need to reload the data, then do DataBind as needed but not on every
request.
--
Teemu Keiski
ASP.NET MVP, AspInsider
Finland, EU
http://blogs.aspadvice.com/joteke

[quoted text, click to view]

Teemu Keiski
9/2/2006 12:00:00 AM
And how do you add the UC to the Page?

--
Teemu Keiski
ASP.NET MVP, AspInsider
Finland, EU
http://blogs.aspadvice.com/joteke

[quoted text, click to view]

AddThis Social Bookmark Button