Download presentation
Presentation is loading. Please wait.
1
CS 3870 Web User Control Events
2
Adding Items to Shopping Bag
DataTable bag = (DataTable)Session["Prog7_Bag"]; DataRow row = bag.NewRow(); row[0] = txtID.Text; row[1] = txtName.Text; row[2] = txtQuantity.Text; //row[3] = txtPrice.Text; //row[4] = txtSubTotal.Text; row[3] = double.Parse(txtPrice.Text.Replace("$", "")); row[4] = double.Parse(txtSubTotal.Text.Replace("$", ""));
3
Public Event Define event Raise event Handle event
4
TextChanged for txtQuantity
TextChanged event is defined by for txtQuantity Raised when the text changed We only need to handle it Inside Class Prog7_ShoppingItem AutoPostBack to True
5
TextChanged for txtQuantity
protected void txtQuantity_TextChanged(object sender, EventArgs e) { int quantity; if(int.TryParse(txtQuantity.Text, out quantity) && quantity >= 0) // update the object and display new cost _theQuantity = quantity; _theCost = _theQuantity * _thePrice; lblMsg.Text = ""; txtCost.Text = string.Format("{0:C}", _theCost); } else // Error message on label and clear Cost txtCost.Text = “” lblMessage.Text = “Invalid”
6
Checkout.aspx The total cost not updated when one ShoppingItem has changed. We need an event!
7
Define Event VB.NET Public Event ItemChanged(ByVal x As Prog7_ShoppingItem, ByVal valid As Boolean) C# //Declaration of delegate. public delegate void ItemChangedHandler(Prog7_ShoppingItem x, bool valid); //Instance of delegate used in declaring event. public event ItemChangedHandler ItemChanged;
8
Raise Event protected void txtQuantity_TextChanged(. . .) {
int quantity; if(int.TryParse(txtQuantity.Text, out quantity) && quantity >= 0) // update the object and display new cost ItemChanged(this, true); } else // Error message on label and clear Cost ItemChanged(this, false);
9
Event Handler //Handler for an item quantity changing. private void HandleChangeEvent(Prog7_ShoppingItem x, bool valid) { if(valid) } else txtTotal.Text = "";
10
private void HandleChangeEvent(Prog7_ShoppingItem x, bool valid) { if (valid) DataTable theTable = (DataTable)Session["Prog5_Bag"]; double total = 0; DataRow row; for (int i = 0; i < theTable.Rows.Count; i++) row = theTable.Rows[i]; if (row[0].ToString() == x.TheID) row[2] = x.TheQuantity; row[4] = x.TheCost; } total += double.Parse(row[4].ToString()); txtTotal.Text = string.Format("{0:C}", total); else txtTotal.Text = "";
11
Add Event Handler // Page Checkout protected void Page_Load(object sender, EventArgs e) { for (int i = 0; i < theTable.Rows.Count; i ++) item.ItemChanged += HandleChangeEvent; Panel1.Controls.Add(item); }
12
Page Shopping.aspx Focus must be correct at all times
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.