Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net Building Controls (http://www.velocityreviews.com/forums/f59-asp-net-building-controls.html)
-   -   UserControl with databound repeater drops values on postback (http://www.velocityreviews.com/forums/t758538-usercontrol-with-databound-repeater-drops-values-on-postback.html)

paul.hester@gmail.com 09-01-2006 04:41 AM

UserControl with databound repeater drops values on postback
 
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();
}


Teemu Keiski 09-01-2006 07:21 PM

Re: UserControl with databound repeater drops values on postback
 
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

<paul.hester@gmail.com> wrote in message
news:1157085701.475148.52270@e3g2000cwe.googlegrou ps.com...
> 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@gmail.com 09-01-2006 09:18 PM

Re: UserControl with databound repeater drops values on postback
 
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

Teemu Keiski wrote:
> 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
>
> <paul.hester@gmail.com> wrote in message
> news:1157085701.475148.52270@e3g2000cwe.googlegrou ps.com...
> > 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();
> > }
> >



Teemu Keiski 09-02-2006 07:11 AM

Re: UserControl with databound repeater drops values on postback
 
And how do you add the UC to the Page?

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

<paul.hester@gmail.com> wrote in message
news:1157145498.028319.319360@h48g2000cwc.googlegr oups.com...
> 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
>
> Teemu Keiski wrote:
>> 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
>>
>> <paul.hester@gmail.com> wrote in message
>> news:1157085701.475148.52270@e3g2000cwe.googlegrou ps.com...
>> > 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();
>> > }
>> >

>





All times are GMT. The time now is 05:23 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.