1 / 28

Working with Session and Application Objects

Working with Session and Application Objects. Postback and Variables. Variables declared in a web page including ADO.Net objects may be reinitialized and lose their values. Persistence of Data between Page Postback. We can store variables and ADO objects in Session object. Session.

levi
Télécharger la présentation

Working with Session and Application Objects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Working with Session and Application Objects

  2. Postback and Variables • Variables declared in a web page including ADO.Net objects may be reinitialized and lose their values.

  3. Persistence of Data between Page Postback • We can store variables and ADO objects in Session object.

  4. Session • The Session object let you to many objects. • Objects stored in Session may not be the same type of object. • Session resizes dynamically. As elements are added, it grows in capacity to accommodate them. • Numerical data stored in Session needs to be casted.

  5. Working with the Session object • To place a value into the Session simply assign it a key and then assign the value: • Session["count"] = count; • Session["myName"] = myName; • To read values from the Session: • count=(int) Session["count"]; • myName=(string) Session["myName"]; • myName = Session["myName"].ToString(); • To remove an item: • Session.Remove("count"); • To remove all items: • Session.RemoveAll();

  6. Increase Counter by One. What is wrong? int counter = 0; protected void Button1_Click(object sender, EventArgs e) { ++counter; Response.Write("You click " + counter.ToString() + " times"); }

  7. Save Counter in Session int counter=0; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) Session["mYcounter"]=counter; else counter = (int) (Session["mYcounter"]); protected void Button1_Click(object sender, EventArgs e) { counter += 1; Session["mYcounter"] = counter; Response.Write(counter); }

  8. DataSet Example • Create a web form with a Radiobuttonlist to choose rating and display customers with the selected rating in a data grid. • RadioButtonList control: • Items property • SelectedValue property

  9. DataSet objDataSet = new DataSet(); DataView objDataView = new DataView(); protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CSharpexamples\\SalesDB2011.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string strSQL = "select * from customer;"; OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSQL, objConn); objAdapter.Fill(objDataSet, "Customer"); Session["myDataset"] = objDataSet; } else objDataSet = (DataSet) Session["myDataset"]; } protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) { objDataView = objDataSet.Tables["customer"].DefaultView; objDataView.RowFilter = "rating = '" + RadioButtonList1.SelectedItem.ToString() + "'"; GridView1.DataSource = objDataView; GridView1.DataBind(); }

  10. Binding a ListBox and Display Two other Fields DataSet objDataSet = new DataSet(); protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CSharpexamples\\SalesDB2011.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string strSQL = "select * from customer;"; OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSQL, objConn); objAdapter.Fill(objDataSet, "Customer"); Session["myDataset"] = objDataSet; ListBox1.DataSource = objDataSet.Tables["Customer"]; ListBox1.DataTextField = "cid"; ListBox1.DataValueField = "Cname"; ListBox1.DataBind(); } else objDataSet = (DataSet)Session["myDataset"]; } protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { TextBox1.Text = ListBox1.SelectedValue; TextBox2.Text = objDataSet.Tables["Customer"].Rows[ListBox1.SelectedIndex]["rating"].ToString(); }

  11. A page with CID Listbox to display customer data in textboxes and orders data in GridView. • Use one adapter to create a dataset with two tables. • Create bound listbox and automatically select the first customer’s CID: • ListBox1.Items[0].Selected = true; • GridView control is bound using Orders table’s view.

  12. protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CSharpexamples\\SalesDB2011.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string strSQL = "select * from customer;"; OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSQL, objConn); objAdapter.Fill(objDataSet, "Customer"); string strSQLOrders = "select * from orders"; objAdapter.SelectCommand.CommandText = strSQLOrders; objAdapter.Fill(objDataSet, "Orders"); Session["myDataset"] = objDataSet; ListBox1.DataSource = objDataSet.Tables["Customer"]; ListBox1.DataTextField = "cid"; ListBox1.DataValueField = "cid"; ListBox1.DataBind(); ListBox1.Items[0].Selected = true; TextBox1.Text = objDataSet.Tables["Customer"].Rows[ListBox1.SelectedIndex]["Cname"].ToString(); TextBox2.Text = objDataSet.Tables["Customer"].Rows[ListBox1.SelectedIndex]["rating"].ToString(); DataView ObjDataView= new DataView(); ObjDataView = objDataSet.Tables["Orders"].DefaultView; ObjDataView.RowFilter = "CID='" + ListBox1.SelectedValue + "'"; GridView1.DataSource = ObjDataView; GridView1.DataBind(); Session["myDataset"] = objDataSet; } else objDataSet = (DataSet)Session["myDataset"]; }

  13. Listbox SelectedIndexChanged event protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { TextBox1.Text = objDataSet.Tables["Customer"].Rows[ListBox1.SelectedIndex]["Cname"].ToString(); TextBox2.Text = objDataSet.Tables["Customer"].Rows[ListBox1.SelectedIndex]["rating"].ToString(); DataView ObjDataView = new DataView(); ObjDataView = objDataSet.Tables["Orders"].DefaultView; ObjDataView.RowFilter = "CID='" + ListBox1.SelectedValue + "'"; GridView1.DataSource = ObjDataView; GridView1.DataBind(); }

  14. Navigate Dataset

  15. Page Load event DataSet objDataSet = new DataSet(); int rowIndex = 0; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CSharpexamples\\SalesDB2011.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string strSQL = "select * from customer;"; OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSQL, objConn); objAdapter.Fill(objDataSet, "Customer"); Session["myDataset"] = objDataSet; Session["rowIndex"] = rowIndex; TextBox1.Text = objDataSet.Tables["Customer"].Rows[rowIndex]["CID"].ToString(); TextBox2.Text = objDataSet.Tables["Customer"].Rows[rowIndex]["Cname"].ToString(); } else objDataSet = (DataSet)Session["myDataset"]; }

  16. Button event protected void Button1_Click(object sender, EventArgs e) { rowIndex = (int)Session["rowIndex"]; ++rowIndex; if (rowIndex >= objDataSet.Tables["Customer"].Rows.Count) rowIndex = objDataSet.Tables["Customer"].Rows.Count-1; TextBox1.Text = objDataSet.Tables["Customer"].Rows[rowIndex]["CID"].ToString(); TextBox2.Text = objDataSet.Tables["Customer"].Rows[rowIndex]["Cname"].ToString(); Session["rowIndex"] = rowIndex; } protected void Button2_Click(object sender, EventArgs e) { rowIndex = (int)Session["rowIndex"]; --rowIndex; if (rowIndex < 0) rowIndex = 0; TextBox1.Text = objDataSet.Tables["Customer"].Rows[rowIndex]["CID"].ToString(); TextBox2.Text = objDataSet.Tables["Customer"].Rows[rowIndex]["Cname"].ToString(); Session["rowIndex"] = rowIndex; }

  17. Share Variables between Pages • First page: • Session[“CustName”]=“Smith”; • Second page: • Response.Write("Welcome, " + Session["CustName“].ToString();)

  18. Global.asax File • The Global.asax file, also known as the ASP.NET application file, is an optional file that contains code for responding to application-level and session-level events. • Application events: • Application_Start • Application_End • Session events: • Session_Start • Session_End

  19. Adding the Global.asax file:Project/Add/New item

  20. Application_Start • Application_Start event gets triggered when the first request for any resource in the application comes. Resource can be a page or an image in the application. When the very first request for a resource, say a web page, is made by a user “Application_Start” is triggered after which this event is not at all executed. • If by any chance the server where the application is hosted is restarted then this event is fired once again i.e. when the very first request for any resource in the application is made after the server is reset.

  21. Session_Start • Session start event is fired only when a new session for a user starts. Once “Session_Start” for a user is fired then if the user makes subsequent request to any resource within the application this event is not at all triggered. • This event can be used when you want to do something when the user visits you site/application for the first time or when his session starts.

  22. Example: Create a variable to show current date and save it in Session protected void Session_Start(object sender, EventArgs e) { string CurrentDay = "Today is " + System.DateTime.Now.DayOfWeek.ToString() + ", " + System.DateTime.Now.ToString(); Session["CurrentDay"] = CurrentDay; } This variable can be accessed from any page: Response.Write(Session["CurrentDay"].ToString());

  23. If a Dataset object is needed in many pages, it can be created and saved in the Session protected void Session_Start(object sender, EventArgs e) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CSharpexamples\\SalesDB2011.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string strSQL = "select * from customer;"; OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSQL, objConn); DataSet objDataSet = new DataSet(); objAdapter.Fill(objDataSet, "Customer"); string strSQLOrders = "select * from orders"; objAdapter.SelectCommand.CommandText = strSQLOrders; objAdapter.Fill(objDataSet, "Orders"); Session["myDataset"] = objDataSet; }

  24. The saved dataset can be accessed from other page protected void Page_Load(object sender, EventArgs e) { DataSet objDataSet = new DataSet(); objDataSet =(DataSet) Session["MyDataset"]; GridView1.DataSource = objDataSet; GridView1.DataMember = "Customer"; GridView1.DataBind(); }

  25. Application/Session Demo • When are Application and Session events triggered? • Database: • WebLog table: • StartEnd field • TimeStamp field • Session.abandon(); • Application.Lock(); • Application.Unlock();

  26. Global.Asax file protected void Application_Start(object sender, EventArgs e) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CSharpexamples\\WebLogDB.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string timeStamp = System.DateTime.Now.ToString(); string strSQLInsert; strSQLInsert = "Insert into WebLog values ('ApplicationStart','" + timeStamp + "')"; OleDbCommand objCommInsert= new OleDbCommand(strSQLInsert, objConn); objConn.Open(); objCommInsert.ExecuteNonQuery(); objConn.Close(); } protected void Session_Start(object sender, EventArgs e) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CSharpexamples\\WebLogDB.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string timeStamp = System.DateTime.Now.ToString(); string strSQLInsert; strSQLInsert = "Insert into WebLog values ('SessionStart','" + timeStamp + "')"; OleDbCommand objCommInsert = new OleDbCommand(strSQLInsert, objConn); objConn.Open(); objCommInsert.ExecuteNonQuery(); objConn.Close(); }

  27. protected void Session_End(object sender, EventArgs e) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CSharpexamples\\WebLogDB.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string timeStamp = System.DateTime.Now.ToString(); string strSQLInsert; strSQLInsert = "Insert into WebLog values ('SessionEnd','" + timeStamp + "')"; OleDbCommand objCommInsert = new OleDbCommand(strSQLInsert, objConn); objConn.Open(); objCommInsert.ExecuteNonQuery(); objConn.Close(); } protected void Application_End(object sender, EventArgs e) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CSharpexamples\\WebLogDB.accdb"; OleDbConnection objConn = new OleDbConnection(strConn); string timeStamp = System.DateTime.Now.ToString(); string strSQLInsert; strSQLInsert = "Insert into WebLog values ('ApplicationEnd','" + timeStamp + "')"; OleDbCommand objCommInsert = new OleDbCommand(strSQLInsert, objConn); objConn.Open(); objCommInsert.ExecuteNonQuery(); objConn.Close(); }

  28. string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CSharpexamples\\SalesDB2011.accdb"; string strSQL; OleDbDataReader objDataReader; protected void Application_Start(object sender, EventArgs e) { OleDbConnection objConn = new OleDbConnection(strConn); strSQL = "select max(VisitorCounter) from VCounterTable"; OleDbCommand objComm=new OleDbCommand(strSQL, objConn); objConn.Open(); Application["visitor"] = objComm.ExecuteScalar(); objConn.Close(); } protected void Session_Start(object sender, EventArgs e) { Application.Lock(); Application["visitor"] = (int) Application["visitor"] + 1; Session["visitor"] = Application["visitor"]; Application.UnLock(); } protected void Application_End(object sender, EventArgs e) { OleDbConnection objConn = new OleDbConnection(strConn); strSQL = "Insert Into VCounterTable Values (#" + (DateTime.Now.ToString()) + "#, " + Application["visitor"] + ");"; OleDbCommand objComm=new OleDbCommand(strSQL, objConn); objConn.Open(); objComm.ExecuteNonQuery(); objConn.Close(); }

More Related