我们用“Inherits="CornfieldGrocer.MainForm"”来表示我们的页面继承自MainForm类,这样我们就实现了对ASP.NET Web 表单行为的控制代码与页面显示的HTML的分离。其中“AutoEventWireup="false"”表示页面事件非自动使能——页面事件非自动使能的意思是所有页面事件必须经过用户明确的操作才能触发,由于该属性缺省为“true”表示自动使能,但我们的商业逻辑要求非自动使能,故这里的语句很有必要,否则会引起系统处理的混乱。下面我们来看MainForm类:
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;
using System; using System.Data; using System.Data.SqlClient; using System.Collections;
namespace CornfieldGrocer { public class InventoryDB { public DataTable GetProducts(int categoryID) { SqlConnection sqlConnect= new SqlConnection ("server=(local);database=CornfieldGrocer;Trusted_Connection=yes"); SqlDataAdapter sqlAdapter1 = new SqlDataAdapter ("Select * from Products where categoryid="+categoryID,sqlConnect); DataSet products = new DataSet(); sqlAdapter1.Fill(products, "products"); return products.Tables[0]; } public DataRow GetProduct(int productID) { SqlConnection sqlConnect= new SqlConnection ("server=(local);database=CornfieldGrocer;Trusted_Connection=yes"); SqlDataAdapter sqlAdapter1 = new SqlDataAdapter ("Select * from Products where productID=" + productID, sqlConnect); DataSet product = new DataSet(); sqlAdapter1.Fill(product, "product"); return product.Tables[0].Rows[0]; } public DataTable GetProductCalories(int productID) { SqlConnection sqlConnect = new SqlConnection ("server=(local);database=CornfieldGrocer;Trusted_Connection=yes"); SqlDataAdapter sqlAdapter1 = new SqlDataAdapter ("Select * from Details where productID="+productID,sqlConnect); DataSet details = new DataSet(); sqlAdapter1.Fill(details, "details"); return details.Tables[0]; } }
public class OrderItem { public int productID; public int quantity; public String name; public double price; public OrderItem(int productID, String name, double price, int quantity) { this.productID = productID; this.quantity = quantity; this.name = name; this.price = price; } public int ProductID { get { return ProductID; } } public int Quantity { get { return quantity; } set { quantity=value; } } public String Name { get { return name; } } public double Price { get { return price; } } public double Total { get { return quantity * price; } } }
public class OrderList { private Hashtable orders = new Hashtable(); private double taxRate = 0.08; public double SubTotal { get { if (orders.Count == 0) return 0.0; double subTotal = 0; IEnumerator items = orders.Values.GetEnumerator(); while(items.MoveNext()) { subTotal += ((OrderItem) items.Current).Price * ((OrderItem) items.Current).Quantity; } return subTotal; } } public double TaxRate { get { return taxRate; } set { taxRate = value; } } public double Tax { get { return SubTotal * taxRate; } } public double Total { get { return SubTotal * (1 + taxRate); } } public ICollection Values { get { return orders.Values; } } public OrderItem this[String name] { get { return (OrderItem) orders[name]; } } public void Add(OrderItem value) { if (orders[value.Name] == null) { orders.Add(value.Name, value); } else { OrderItem oI = (OrderItem)orders[value.Name]; oI.Quantity = oI.Quantity + 1; } } public void ClearCart() { orders.Clear(); } } }