Solved

Get data from control state on the INIT event

Posted on 2008-10-17
1
888 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

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

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
There are cases when e.g. an IT administrator wants to have full access and view into selected mailboxes on Exchange server, directly from his own email account in Outlook or Outlook Web Access. This proves useful when for example administrator want…
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…

728 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