📄 mycart.aspx.cs
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Web.SessionState;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
namespace flower.front.cart
{
/// <summary>
/// myCart 的摘要说明。
/// </summary>
public class myCart : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid ShoppingCartDlt;
protected System.Web.UI.WebControls.Button update;
protected System.Web.UI.WebControls.Button CheckOut;
protected System.Web.UI.WebControls.Label label;
string AddID;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//查看用户是否已经登录
if(Session["logined"]==null || Session["logined"].ToString()!="true")
{
Response.Write("<script>alert('您还没有登录,请先登录!');history.back();</script>");
return;
}
if(!IsPostBack)
{
if(Request.Params["mode"]=="view") //检查是否为直接查看购物车
{
ViewShoppingCart();
Caculator();
}
if(Request.Params["AddID"]!=null)//从其他页进入该页时,是这样,因为这不是从其他页进入本页,因此将三行代码移到下面.
{
AddID=Request.Params["AddID"];
//AddID="1";
UpdateShoppingCart();
Caculator();
}
}
}
public void CreateCartTable() //创建购物表ProdID,ProdCount,ProName,UnitPrice,TotalPrice,IsDeleted,此表绑定到DataGrid.
{
DataSet myDS=new DataSet();
DataTable myDT=new DataTable("CartTable");
myDS.Tables.Add(myDT);
DataColumn myDC;
myDC=new DataColumn("ProdID",System.Type.GetType("System.Int32"));
myDS.Tables["CartTable"].Columns.Add(myDC);
myDC=new DataColumn("ProdCount",System.Type.GetType("System.Int32"));
myDC.DefaultValue=1;
myDS.Tables["CartTable"].Columns.Add(myDC);
myDC=new DataColumn("ProName",System.Type.GetType("System.String"));
myDS.Tables["CartTable"].Columns.Add(myDC);
myDC=new DataColumn("UnitPrice",System.Type.GetType("System.Double"));
myDS.Tables["CartTable"].Columns.Add(myDC);
myDC=new DataColumn("TotalPrice",System.Type.GetType("System.Double"));
myDS.Tables["CartTable"].Columns.Add(myDC);
myDC=new DataColumn("Unit",System.Type.GetType("System.String"));
myDS.Tables["CartTable"].Columns.Add(myDC);
myDC=new DataColumn("IsDeleted",System.Type.GetType("System.String"));
myDC.DefaultValue=0;
myDS.Tables["CartTable"].Columns.Add(myDC);
Session["myCartTable"]=myDT;
ShoppingCartDlt.DataSource=myDS.Tables["CartTable"].DefaultView;
ShoppingCartDlt.DataBind();
}
public void UpdateShoppingCart()//更新购物车
{
if(Session["myCartTable"]==null)
CreateCartTable();//调用函数CreateCartTable( )新建一个DataTable
WriteShoppingCart(); //如果购物蓝中已有商品,则需要对购物信息表DataTable进行更新,并将其绑定到ShoppingCartDlt
}
public void ViewShoppingCart() //查看购物车
{
if(Session["myCartTable"]!=null)
{
DataTable viewTable=new DataTable("nowCartTable");
viewTable=(DataTable)Session["myCartTable"];
ShoppingCartDlt.DataSource=viewTable.DefaultView;
ShoppingCartDlt.DataBind();
}
}
public void WriteShoppingCart()
{
if(Request.Params["mode"]!="view") //检查是否是直接查看购物车,如果直接查看,就不再写MYCARTTABLE
{
DataTable nowTable=new DataTable("nowCartTable");
nowTable=(DataTable)Session["myCartTable"];
int pn=nowTable.Rows.Count;
int i=0;
bool hasone=false;
int nowProdID;
while(i<pn&&!hasone)
{
nowProdID=Int32.Parse(nowTable.Rows[i][0].ToString());
if(nowProdID==Int32.Parse(AddID)) //判断购物信息表中,是否存有当前放入商品. if( nowProdID==Int32.Parse( AddID ) )
{
hasone=true;
}
else
{
i++;
}
}
if(hasone)
{
//如果已有该商品,则 hasone=true,更改该数据行
DataRow oldDR;
oldDR=nowTable.Rows[i];
oldDR["ProdCount"]=Int32.Parse(oldDR["ProdCount"].ToString())+1;
oldDR["TotalPrice"]=Int32.Parse(oldDR["ProdCount"].ToString())*Double.Parse(oldDR["UnitPrice"].ToString());
}
else
{
//如果没有该商品,在表中新加入一行.
DataRow newDR;
Double unitp;
/*
string strConn="provider=microsoft.jet.oledb.4.0;data source="+MapPath("cart.mdb");
OleDbConnection myConn=new OleDbConnection(strConn);
string strComm="select * from cart where prodid="+AddID+"";
OleDbDataAdapter myDA=new OleDbDataAdapter(strComm,myConn);
DataSet myDS=new DataSet();
myDA.Fill(myDS,"AddP");
*/
string strComm="select * from flower where id="+AddID+"";
DBOP myDBOP=new DBOP();
DataSet myDS=new DataSet();
myDS=myDBOP.mySelect(strComm);
newDR=nowTable.NewRow();
newDR["ProdID"]=AddID;
newDR["ProName"]=myDS.Tables[0].Rows[0][1].ToString();
//默认ProdCount是1,所以不用设置.
unitp=Double.Parse(myDS.Tables[0].Rows[0][3].ToString());
newDR["UnitPrice"]=unitp;
newDR["Unit"]=myDS.Tables[0].Rows[0]["unit"].ToString().Trim();
newDR["TotalPrice"]=unitp;//第一次读库,所以总价格和单价是一样的.
nowTable.Rows.Add(newDR);
//myConn.Close(); myDA会自动关闭连接,所以此句可不要.
}
Session["myCartTable"]=nowTable;//将更新后的购物表保存到会话.
ShoppingCartDlt.DataSource=nowTable.DefaultView;
ShoppingCartDlt.DataBind(); //将更新后的 DataTable绑定到ShoppingCartDlt
}
}
public void Caculator()//结算
{
if(Session["myCartTable"]!=null) //购物车是否为空
{
int h;
Double TotalPri=0;
DataTable nowTable3=new DataTable("CartTable3");
nowTable3=(DataTable)Session["myCartTable"];
if(nowTable3.Rows.Count>0) //返回购物车中是否有货物
{
for(h=1;h<=nowTable3.Rows.Count;h++)
{
TotalPri=TotalPri+Int32.Parse(nowTable3.Rows[h-1][4].ToString());
}
label.Text="总计"+TotalPri.ToString()+"元";
}
}
}
public void Update()//更新我的购物车
{
//int deleteid; 末使用此变量。
int i,j,k;
j=0;
k=0;
ArrayList deleteItem=new ArrayList(10);
System.Web.UI.WebControls.DataGridItem _item;
DataTable nowTable2=new DataTable("nowCartTable2");
nowTable2=(DataTable)Session["myCartTable"];
for(i=0;i<=this.ShoppingCartDlt.Items .Count-1;i++)
{
_item=this.ShoppingCartDlt.Items[i];
TextBox CountText=(TextBox)this.ShoppingCartDlt.Items[i].FindControl("CountTb");
CheckBox ProductIDCheck=(CheckBox)this.ShoppingCartDlt.Items[i].FindControl("chkProductID");
if(ProductIDCheck.Checked)
{
nowTable2.Rows[i][5]=1;
}
else
{
nowTable2.Rows[i][1]=Int32.Parse(CountText.Text.ToString());
nowTable2.Rows[i][4]=Int32.Parse(nowTable2.Rows[i][1].ToString())*Double.Parse(nowTable2.Rows[i][3].ToString());
}
}
string strExpr="IsDeleted>0";
//http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemDataDataTableClassSelectTopic.asp
DataRow[] foundRows = nowTable2.Select( strExpr );
for( int m = 0;
m < foundRows.Length;
m ++ )
{
//Console.WriteLine( foundRows[i][0] );//测试用
foundRows[m].Delete( );
}
ShoppingCartDlt.DataSource = nowTable2.DefaultView;
ShoppingCartDlt.DataBind( );
Session["myCartTable"] = nowTable2;
Caculator( );
}
private void update_Click( object sender, System.EventArgs e )
{
if(ShoppingCartDlt.Items.Count>0)
{
Update( );
}
}
private void CheckOut_Click( object sender, System.EventArgs e )
{
if(ShoppingCartDlt.Items.Count>0)
{
Update( );
Order myOrder=new Order();
Order.OrderStru myOrderStru=new Order.OrderStru();
myOrderStru.id=myOrder.GetOrderMaxID()+1;
myOrderStru.name="order"+myOrderStru.id.ToString().Trim();
myOrderStru.userid=(int)Session["userid"];
myOrderStru.state="末处理";
myOrderStru.beginday=System.DateTime.Now.ToString().Trim() ;
myOrderStru.endday=System.DateTime.Now.ToString().Trim() ;
//myOrderStru.id=myOrder.GetOrderItemsMaxID()+1;
//将订单信息加入orders表。
myOrder.AddOrderDetail(myOrderStru);
Order.OrderItemsStru myOrderItemsStru=new Order.OrderItemsStru();
for(int i=0;i<ShoppingCartDlt.Items.Count;i++)
{
myOrderItemsStru.id=myOrder.GetOrderItemsMaxID()+1;
myOrderItemsStru.orderid=myOrderStru.id;
myOrderItemsStru.flowerid=Convert.ToInt32(ShoppingCartDlt.Items[i].Cells[1].Text.Trim());
myOrderItemsStru.flowername=ShoppingCartDlt.Items[i].Cells[2].Text.Trim();
myOrderItemsStru.count=Convert.ToInt32(((TextBox)ShoppingCartDlt.Items[i].FindControl("CountTb")).Text);
myOrderItemsStru.outprice=Convert.ToInt32(ShoppingCartDlt.Items[i].Cells[3].Text.Trim());
myOrderItemsStru.unit=ShoppingCartDlt.Items[i].Cells[5].Text.Trim();
//将订单条目内容加入orderitems表。
myOrder.AddOrderItems(myOrderItemsStru);
}
Response.Redirect( "/flower/front/order/viewallorders.aspx?view=Last" );
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.update.Click += new System.EventHandler(this.update_Click);
this.CheckOut.Click += new System.EventHandler(this.CheckOut_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -