Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net Web Controls (http://www.velocityreviews.com/forums/f63-asp-net-web-controls.html)
-   -   WebControl & Viewstate (http://www.velocityreviews.com/forums/t772397-webcontrol-and-viewstate.html)

Chris 01-23-2004 03:11 AM

WebControl & Viewstate
 
I'm trying to create a WebControl that creates additional WebControls at runtime and persists their data across the PostBack.

The basic idea is this:

public class WebControl1: System.Web.UI.WebControls.WebControl
{
// Member Variables, Properties, etc...

protected override void Render(HtmlTextWriter output)
{
RadioButton myRadioButton = new RadioButton();
myRadioButton.ID = "RadioButton1";
myRadioButton.GroupName = "RadioButtonGroup1";
Page.Controls.Add(myRadioButton);
myRadioButton.RenderControl(output);
}
}

When this control is used on a page such as:

<tag:webcontrol id="WebControl1" runat="server"></tag:webcontrol>

..... everything loads up nicely (i.e. a RadioButton is rendered to the page). Obviously, because the control (myRadioButton) is created each time the class is loaded and the HTML output is rendered, if the RadioButton is toggled (checked), it will not retain its state.

Rather than go into all of the things I've *tried* to do to get this RadioButton to persist its Checked property across PostBack's, I'll just pose my question directly which is what do I need to add to this (very simple) code to get that RadioButton to persist its state across PostBack's?

Obviously, at some point I need to *save* the value the user sets it to and at some point I need to check that value and restore it when the control is re-created on PostBack but where? Override some methods (SaveViewState/LoadViewState)? Implement an Interface (IPostBackDataHandler, etc...)?

Much thanks in advance -

- Chris


Victor Garcia Aprea [MVP] 01-23-2004 03:54 AM

Re: WebControl & Viewstate
 
Hi Chris,

The radiobutton is not saving its state because it is being created too
late; at Render lots of important key events have already fired (Init,
viewstate loading, etc) and your control was not there yet to be called by
the fx to update its state/etc. Please take a look at the Control Execution
Lifecycle to learn more about how it will affect dynamically created
controls. Here[1] you will find a link to the docs and some insights I've
written about the topic.

[1] http://weblogs.asp.net/vga/archive/2.../11/23498.aspx

--
Victor Garcia Aprea
Microsoft MVP | ASP.NET
Looking for insights on ASP.NET? Read my blog:
http://obies.com/vga/blog.aspx
To contact me remove 'NOSPAM'. Please post all questions to the newsgroup

"Chris" <anonymous@discussions.microsoft.com> wrote in message
news:AE3AFA6F-786D-4831-823B-F9573DF4E38B@microsoft.com...
> I'm trying to create a WebControl that creates additional WebControls at

runtime and persists their data across the PostBack.
>
> The basic idea is this:
>
> public class WebControl1: System.Web.UI.WebControls.WebControl
> {
> // Member Variables, Properties, etc...
>
> protected override void Render(HtmlTextWriter output)
> {
> RadioButton myRadioButton = new RadioButton();
> myRadioButton.ID = "RadioButton1";
> myRadioButton.GroupName = "RadioButtonGroup1";
> Page.Controls.Add(myRadioButton);
> myRadioButton.RenderControl(output);
> }
> }
>
> When this control is used on a page such as:
>
> <tag:webcontrol id="WebControl1" runat="server"></tag:webcontrol>
>
> ... everything loads up nicely (i.e. a RadioButton is rendered to the

page). Obviously, because the control (myRadioButton) is created each time
the class is loaded and the HTML output is rendered, if the RadioButton is
toggled (checked), it will not retain its state.
>
> Rather than go into all of the things I've *tried* to do to get this

RadioButton to persist its Checked property across PostBack's, I'll just
pose my question directly which is what do I need to add to this (very
simple) code to get that RadioButton to persist its state across PostBack's?
>
> Obviously, at some point I need to *save* the value the user sets it to

and at some point I need to check that value and restore it when the control
is re-created on PostBack but where? Override some methods
(SaveViewState/LoadViewState)? Implement an Interface (IPostBackDataHandler,
etc...)?
>
> Much thanks in advance -
>
> - Chris
>




CMA 01-23-2004 04:38 AM

Re: WebControl & Viewstate
 
r u creating the control in page load event???
if so, u r creating it again and again. u can make sure it with a break
point. if so, create it withing this code.

if(!IsPostBack)
{
// create control here
}

in this way, u r creating the control only once. it will remain the state by
default.

if u r not creating the controll every time, my guess is wrong.

hope this helps.
regards,
CMA




"Chris" <anonymous@discussions.microsoft.com> wrote in message
news:AE3AFA6F-786D-4831-823B-F9573DF4E38B@microsoft.com...
> I'm trying to create a WebControl that creates additional WebControls at

runtime and persists their data across the PostBack.
>
> The basic idea is this:
>
> public class WebControl1: System.Web.UI.WebControls.WebControl
> {
> // Member Variables, Properties, etc...
>
> protected override void Render(HtmlTextWriter output)
> {
> RadioButton myRadioButton = new RadioButton();
> myRadioButton.ID = "RadioButton1";
> myRadioButton.GroupName = "RadioButtonGroup1";
> Page.Controls.Add(myRadioButton);
> myRadioButton.RenderControl(output);
> }
> }
>
> When this control is used on a page such as:
>
> <tag:webcontrol id="WebControl1" runat="server"></tag:webcontrol>
>
> ... everything loads up nicely (i.e. a RadioButton is rendered to the

page). Obviously, because the control (myRadioButton) is created each time
the class is loaded and the HTML output is rendered, if the RadioButton is
toggled (checked), it will not retain its state.
>
> Rather than go into all of the things I've *tried* to do to get this

RadioButton to persist its Checked property across PostBack's, I'll just
pose my question directly which is what do I need to add to this (very
simple) code to get that RadioButton to persist its state across PostBack's?
>
> Obviously, at some point I need to *save* the value the user sets it to

and at some point I need to check that value and restore it when the control
is re-created on PostBack but where? Override some methods
(SaveViewState/LoadViewState)? Implement an Interface (IPostBackDataHandler,
etc...)?
>
> Much thanks in advance -
>
> - Chris
>




Chris 01-23-2004 04:41 AM

Re: WebControl & Viewstate
 
Thank you!!! I've got it working now.

I can't believe all this time I should have just been creating these things in Page_Load()... Doh! There are so many methods, events, interfaces, etc... it all starts to mash together!

- Chris

Victor Garcia Aprea [MVP] 01-23-2004 04:55 AM

Re: WebControl & Viewstate
 
Glad I could help :-)

--
Victor Garcia Aprea
Microsoft MVP | ASP.NET
Looking for insights on ASP.NET? Read my blog:
http://obies.com/vga/blog.aspx

To contact me remove 'NOSPAM'. Please post all questions to the newsgroup

"Chris" <anonymous@discussions.microsoft.com> wrote in message
news:BF3DC3D9-57C3-4BC3-BC7C-775E669E9CC9@microsoft.com...
> Thank you!!! I've got it working now.
>
> I can't believe all this time I should have just been creating these

things in Page_Load()... Doh! There are so many methods, events, interfaces,
etc... it all starts to mash together!
>
> - Chris





All times are GMT. The time now is 03:59 AM.

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