Tsvetan
Tsvetan

Reputation: 287

Session doesn't remember set value

I am trying to pass data between two pages using Session State in ASP.NET. The data that needs to be passed is from a GridView's Cell. So, on SelectedIndexChanged event I'm storing the data like that:

protected void GridViewEmployees_SelectedIndexChanged(object sender, EventArgs e)
{
        Session["Name"] =   
           this.GridViewEmployees.Rows[GridViewEmployees.SelectedIndex].DataItem;
}

And then, I want to use the Session's contents in another page. The code:

protected void Page_Load(object sender, EventArgs e)
{
        string name = (string)(Session["Name"]);
        string[] names = name.Split(' ');
        this.EntityDataSourceNorthwind.Where = 
           "it.[FirstName] = \'" + names[0] + 
           "\' AND it.[lastName] = \'" + names[1] + "\'";
}

But I get a null reference exception. Also, I have set the Session initialization on the Page_Load event and there the Session is stored and everything works just fine. I mean:

protected void Page_Load(object sender, EventArgs e)
{
        if (Session["Name"] == null)
        {
            Session["Name"] = "Andrew Fuller";
        }
}

This is in the page which sends the information.

If you need more source or info, just write it down. It will be provided ASAP.

Thanks in advance!

Upvotes: 1

Views: 322

Answers (2)

TheGeekYouNeed
TheGeekYouNeed

Reputation: 7539

This is actually not a problem with your Session. A row's DataItem is only available during the RowDataBound event. Set a break point in your GridViewEmployees_SelectedIndexChanged method, and check the value of the DataItem in your immediate window. It will be null.

Upvotes: 2

Rex M
Rex M

Reputation: 144112

The two most likely culprits are either - session state is disabled (EnableSessionState="false"), or cookies are disabled and you're not using cookieless sessions.

Upvotes: 1

Related Questions