Solved

Get data from control state on the INIT event

Posted on 2008-10-17
1
878 Views
Last Modified: 2013-11-07
What should we do to get the data in a control state of a page on the Init event after a postback is done?

You must keep in mind that the method(LoadControlState) that gets the data is automatically called when that method finishes and before the Load event starts similar to what happens with the viewstate and attributes.

Any ideas?

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;
 

public partial class _Default : System.Web.UI.Page

{

    string uniqueControlId = null;
 

    protected override void LoadControlState(object savedState)

    {

        if (savedState != null)

            uniqueControlId = (string)savedState;

    }
 

    protected override object SaveControlState()

    {

        return (object)uniqueControlId;

    }
 

    protected override void OnInit(EventArgs e)

    {

        try

        {

            Page.RegisterRequiresControlState(this);
 

            if (!IsPostBack)

            {

                uniqueControlId = Guid.NewGuid().ToString();

                Test test = new Test();

                test.value1 = "testData1";

                test.value2 = "testData2";

                Session["Data_" + uniqueControlId] = test;

            }

            else

            {

                //uniqueControlId is null, control state not loaded

                if (Session["Data_" + uniqueControlId] != null)

                    ((Test)Session["Data_" + uniqueControlId]).value1 += "Modified_INIT";

            }
 

            base.OnInit(e);

        }

        catch

        {

        }

    }
 
 
 

    protected void Page_Load(object sender, EventArgs e)

    {

        if (IsPostBack)

        {

            if (Session["Data_" + uniqueControlId] != null)

                ((Test)Session["Data_" + uniqueControlId]).value2 += "Modified_LOAD";

        }
 
 

        //uniqueControlId success loaded

        if (Session["Data_" + uniqueControlId] != null)

        {

            Response.Write("<br /> test.value1=" + ((Test)Session["Data_" + uniqueControlId]).value1);

            Response.Write("<br /> test.value2=" + ((Test)Session["Data_" + uniqueControlId]).value2);

        }

        else

        {

            Response.Write("<br />ERROR");

        }
 
 

    }
 

    protected override void OnUnload(EventArgs e)

    {

        SaveControlState();

        base.OnUnload(e);

    }
 

    protected void Button1_Click(object sender, EventArgs e)

    {
 

    }

}
 

public class Test

{

    public string value1;

    public string value2;

}

Open in new window

0
Comment
Question by:CMS-Team
1 Comment
 
LVL 3

Accepted Solution

by:
JunkMan earned 500 total points
ID: 22746205
It will not be possible to do without hacking around the framework's page cycle, and there might be implications with that.

For whatever reason you need to load your controls state on Init i would suggest you to change your logic.

If you explain me exactly why you need to do so, i'll be happy to guide you to another solution.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now