⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 storecomponents.cs

📁 asp.net技术内幕的书配源码
💻 CS
字号:
using System;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;

namespace StoreComponents {
	////////////////////////////////////////////////////////////////////////////////////
	// Contains shared methods for retrieving
	// cached database data
	////////////////////////////////////////////////////////////////////////////////////
	public class CachedData {

		public static DataView GetCategories() {
			if ( HttpContext.Current.Cache["Categories"] == null ) {
				HttpContext.Current.Cache["Categories"] = GetCategoriesFromDB();
			}
			return (DataView)HttpContext.Current.Cache["Categories"];
		}

		public static string GetCategoryDescription( int intCategory ) {
			if ( HttpContext.Current.Cache["Categories"] == null ) {
				HttpContext.Current.Cache["Categories"] = GetCategoriesFromDB();
			}
			return (string)((DataView)HttpContext.Current.Cache["Categories"])[intCategory]["Description"];
		}

		private static DataView GetCategoriesFromDB() {
			string  strConString;
			SqlConnection conMyData;
			string  strSelect;
			SqlDataAdapter dadCategories;
			DataSet dstCategories;

			strConString = ConfigurationSettings.AppSettings["connectionString"];
			conMyData = new SqlConnection( strConString );
			strSelect = "Select CategoryID,CategoryName,Description From Categories";
			dadCategories = new SqlDataAdapter( strSelect, conMyData );
			dstCategories = new DataSet();
			dadCategories.Fill( dstCategories, "Categories" );
			return  dstCategories.Tables["Categories"].DefaultView;
		}

		public static DataView GetProducts( int intCategoryIndex ) {
			int intCategoryID;
			DataView dvwProducts;

			dvwProducts = (DataView)HttpContext.Current.Cache["Products"];
			if ( dvwProducts == null ) {
				dvwProducts = GetProductsFromDB();
				HttpContext.Current.Cache["Products"] = dvwProducts;
			}
			if ( HttpContext.Current.Cache["Categories"] == null ) {
				HttpContext.Current.Cache["Categories"] = GetCategoriesFromDB();
			}
			intCategoryID = (int)((DataView)HttpContext.Current.Cache["Categories"])[intCategoryIndex]["CategoryID"];
			dvwProducts.RowFilter = "CategoryID=" + intCategoryID;
			return dvwProducts;
		}

		public static string  GetProductTemplate( int intProductID ) {
			int intProductIndex;

			DataView products = HttpContext.Current.Cache["Products"] as DataView;
			if ( products == null ) {
				products = GetProductsFromDB();
				HttpContext.Current.Cache["Products"] = products;
			}
			products.RowFilter = "";
			intProductIndex = (int)products.Find( intProductID );
			return (string)products[intProductIndex]["Template"];
		}

		public static DataRowView GetProductRow( int intProductID ) {
			int intProductIndex;

			DataView products = HttpContext.Current.Cache["Products"] as DataView;
			if ( products == null ) {
				products = GetProductsFromDB();
				HttpContext.Current.Cache["Products"] = products;
			}
			products.RowFilter = "";
			intProductIndex = products.Find( intProductID );
			return products[intProductIndex];
		}

		private static DataView GetProductsFromDB() {
			string  strConString;
			SqlConnection conMyData;
			string  strSelect;
			SqlDataAdapter dadProducts;
			DataSet dstProducts;

			strConString = ConfigurationSettings.AppSettings["connectionString"];
			conMyData = new SqlConnection( strConString );
			strSelect = "Select * From Products";
			dadProducts = new SqlDataAdapter( strSelect, conMyData );
			dstProducts = new DataSet();
			dadProducts.Fill( dstProducts, "Products" );
			dstProducts.Tables["Products"].DefaultView.Sort = "ProductID";
			return dstProducts.Tables["Products"].DefaultView;
		}
	}

	////////////////////////////////////////////////////////////////////////////////////////////////////
	// The ProductTemplate class is the base class
	// from which all user control product templates derive
	//////////////////////////////////////////////////////////////////////////////////////////////////////////
	public class ProductTemplate : UserControl {
		public int ProductID {
			get {
				return (int)Context.Items["ProductID"];
			}
		}

		public string  ProductName {
			get {
				return (string)Context.Items["ProductName"];
			}
		}

		public Decimal UnitPrice {
			get {
				return (Decimal)Context.Items["UnitPrice"];
			}
		}

		public DataRowView Product {
			get {
				return (DataRowView)Context.Items["ProductInfo"];
			}
		}
	}

	//////////////////////////////////////////////////////////////////////////////////////
	// The shopping cart
	//////////////////////////////////////////////////////////////////////////////////////

	public class ShoppingCart {

		private SqlConnection _conCart;
		private SqlDataAdapter _dadCart;
		private DataSet _dstCart;
		private SqlCommandBuilder _cbCart;
		private Guid _guidUserID;

		public ShoppingCart() {
			string  strConString;
			string  strSelect;
			HttpCookie objCookie;

			// Prepare db connection
			strConString = ConfigurationSettings.AppSettings["connectionString"];
			_conCart = new SqlConnection( strConString );

			// Check for StoreUserID cookies
			objCookie = HttpContext.Current.Request.Cookies["StoreUserID"];
			if ( objCookie == null ) {
				_guidUserID = Guid.NewGuid();
				objCookie = new HttpCookie( "StoreUserID", _guidUserID.ToString() );
				objCookie.Expires = DateTime.Now.AddYears( 3 );
				HttpContext.Current.Response.Cookies.Add( objCookie );
			} 
			else {
				_guidUserID = new Guid( objCookie.Value );
			}

			// Retrieve the shopping cart
			strSelect = "Select itemID, userID, ProductID, ProductName, UnitPrice, Quantity From ShoppingCarts Where userID = @userID" ;
			_dadCart = new SqlDataAdapter( strSelect, _conCart );
			_dadCart.SelectCommand.Parameters.Add( "@userID", _guidUserID );
			_dadCart.MissingSchemaAction = MissingSchemaAction.AddWithKey;
			_cbCart = new SqlCommandBuilder( _dadCart );
			_dstCart = new DataSet();
			_dadCart.Fill( _dstCart, "Cart" );
		}


		public DataView Items {
			get {
				return _dstCart.Tables["Cart"].DefaultView ;
			}
		}

		public void Add( int ProductID, string  ProductName, Decimal UnitPrice ) {
			bool blnMatch = false;
			DataRow drowItem;
    
			foreach (DataRow row in _dstCart.Tables["Cart"].Rows) {
				if ( (int)row["ProductID"] == ProductID ) {
					row["Quantity"] = (int)row["Quantity"]+1;
					blnMatch = true;
				}
			}
    
			if (! blnMatch ) {
				drowItem = _dstCart.Tables["Cart"].NewRow();
				drowItem["UserID"] = _guidUserID;
				drowItem["ProductID"] = ProductID;
				drowItem["ProductName"] = ProductName ;
				drowItem["UnitPrice"] = UnitPrice;
				drowItem["Quantity"] = 1;
				_dstCart.Tables["Cart"].Rows.Add( drowItem );
			}
			UpdateCartDB();
		}

		public void Remove( int ItemIndex ) {
			_dstCart.Tables["Cart"].Rows[ItemIndex].Delete();
			UpdateCartDB();
		}

		public Decimal GetItemTotal() {
			DataRow drowItem;
			Decimal decRunningTotal=0;

			for ( int i = 0 ; i <= _dstCart.Tables["Cart"].Rows.Count - 1 ; i++) {
				drowItem = _dstCart.Tables["Cart"].Rows[i];
				decRunningTotal += ( (decimal)drowItem["UnitPrice"] * (int)drowItem["Quantity"] );
			} 
			return decRunningTotal;
		}
		
		private void UpdateCartDB() {
			_dadCart.Update( _dstCart, "Cart" );
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -