Mantain ViewState

J

Jonathan

Hello,
I'm writed a WebCustomControl but I can't mantain the viewstate this is the
code of my WebCustomContol:

public class WebCustomControl1 : System.Web.UI.WebControls.WebControl,
IPostBackEventHandler
{
public event EventHandler DoPostBack;
protected override void Render(HtmlTextWriter output)
{
output.Write(GetControlHTML());
}
private string GetControlHTML()
{
StringWriter TextBoxWriter = new StringWriter();
HtmlTextWriter ControlWriter = new HtmlTextWriter(TextBoxWriter);
TextBox box = new TextBox();
box.ID = "txtViewState";
if(ViewState["txtViewState"] == null)
ViewState.Add("txtViewState","Testeando");
box.Text = (string)ViewState["txtViewState"];
box.RenderControl(ControlWriter);
Button button = new Button();
button.Text = "DoPostBack";

button.Attributes.Add("onclick",Page.GetPostBackClientEvent(button,"doPostBa
ck"));
button.RenderControl(ControlWriter);
return TextBoxWriter.ToString();
}
public void RaisePostBackEvent(string eventArgument)
{
if(eventArgument == "doPostBack")
{
if(this.DoPostBack != null)
this.DoPostBack(this,EventArgs.Empty);
}
}
}

Somebody knows how is the correct way to mantain the ViewState

Thanks!
 
G

Guest

From the code that you have displayed, it looks that you are using the
ViewState ok, although you are doing things the hard way. You can, instead,
just create a button and a text box and handle the button event without
worrying about postbacks.

Two things you should look for. First, make sure you have the ViewState
enabled (you can check by Page.EnableViewState). Second, make sure that your
page is not being posted back more than once or re-directed. Best way to look
for that is to enable tracing on the containing page. You should then be able
to see if the page posted back once or more times. You will also be able to
see the size of the viewstate for each control.

Regards,
-Visar
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top