Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 3870 Web User Control Events.

Similar presentations


Presentation on theme: "CS 3870 Web User Control Events."— Presentation transcript:

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


Download ppt "CS 3870 Web User Control Events."

Similar presentations


Ads by Google