📄 storecomponents.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 + -