|
How to use Session variables?
by: Itfunda
Product Type: Tips and Tricks (Books)
Technologies: ASP.NET Session-Management
Session data is a user specific data stored into the server memory. By default when we store the
data into the session, it is stored into the Web server memory and that is called In-Proc session.
To store data into session and retrieve data from session, we can follow this approach.
ASPX Page
<asp:Label ID="lblMessage" runat="server" EnableViewState="false" />
<div>
<asp:DetailsView ID="DetailsView1" runat="server" EnableViewState="false" />
</div>
<p><asp:Button ID="btnClear" runat="server" Text="Clear Session" OnClick="ClearSession" /></p>
Code Behind
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetData(1);
}
}
private void GetData(int autoId)
{
DataTable table = new DataTable();
if (Session["MyData"] != null)
{
table = (DataTable)Session["MyData"];
lblMessage.Text = "Getting from Session";
}
else
{
// get the connection
using (SqlConnection conn = new SqlConnection(_connStr))
{
// write the sql statement to execute
string sql = "SELECT AutoId, FirstName, LastName, Age, Active FROM PersonalDetail WHERE AutoId = @AutoId ORDER By AutoId";
// instantiate the command object to fire
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
// get the adapter object and attach the command object to it
using (SqlDataAdapter ad = new SqlDataAdapter(cmd))
{
SqlParameter prm = new SqlParameter("@AutoId", SqlDbType.Int);
prm.Value = autoId;
cmd.Parameters.Add(prm);
// fire Fill method to fetch the data and fill into DataTable
ad.Fill(table);
}
}
}
Session["MyData"] = table;
// set the time out to 40 minutes after that this session variable should expire
Session.Timeout = 40;
lblMessage.Text = "Getting from Database";
}
// specify the data source for the GridView
DetailsView1.DataSource = table;
// bind the data now
DetailsView1.DataBind();
}
protected void ClearSession(object sender, EventArgs e)
{
Session.Remove("MyData");
// to cancel all the current sessionn for this user call
//Session.Abandon();
}
In the above code snippet, on the .aspx page we have an asp:Label, asp:DetailsView and an asp:Button. In the Page_Load we are calling GetData method to check if there is some data into the Session variable Session[“MyData”] , if not we are using ADO.NET to retrieve the data and saving into the Session[“MyData”] session variableand specifying Session.Timeout to 40 (this will expire this session variable after 40 minutes and its data will be lost). If Session[“MyData”] is not null we are unboxing the session variable to the table variable of DataTable type and the same table is being used to populate the DetailsView.
On the click of “Clear Session” button; we are removing the “MyData” session key from the session that will remove the data “MyData” key value from the session object (If we will use Session[“MyData”] in the code behind now we shall get null value) . If we want to cancel all session of that particular user, we can call Session.Abandon method.
OUTPUT
First time request to this page
Subsequent request of this page
|