购物车代码!!为什么我的session【“Cart”】一直为null,之前还可以,今天再一调试的时候就出错!!!!!!
public partial class ProductDetail : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
//用购物车存储用户挑选的商品
private DataRow getProductByID(string ProductID)//自定义方法getProductID
{
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["UserDBConnectionString"].ConnectionString);
//sqlconnection表示与sql server数据源的唯一的会话
//conf里面的句子表示获取userdbcns的对应值(web config)
SqlCommand cmd = new SqlCommand("select *from Products where ProductID=@ProductID", cn);
cmd.Parameters.Add("@ProductID", SqlDbType.NVarChar).Value = ProductID;
DataSet ds = new DataSet();
//dataset(支持ado.net中的断开连接的分布式数据方案)是数据驻留在内存中的表现形式,还有datarow,table(web开发书里面94)
SqlDataAdapter da = new SqlDataAdapter(cmd);
//sqldataadpter 是dataset和sqlserver的桥接器,用于检索和保存数据。当sda填充dataset时,它返回的数据创建必需的表和列(当表和列不存在)
//查看ado.net架构(开题报告里也有)
cn.Open();
da.Fill(ds);
cn.Close();
if (ds.Tables[0].Rows.Count > 0)
return ds.Tables[0].Rows[0];
else return null;
}
/* protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
txtTime.Text= ddlYear.SelectedItem.Text;
}*/
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
//按下购物按钮之后,完成加入购物车这个动作
if (e.CommandName == "Buy")
{
DataRow dr = getProductByID(Request.QueryString["ProductID"]);//自定义的方法;datarow表示实际包含的数据。用于检索、计算、处理表中数据。
string ProductID = dr["ProductID"].ToString();
string ProductName = dr["ProductName"].ToString();
string Color = dr["Color"].ToString();
double Price = Convert.ToDouble(dr["Price"].ToString());
string Time=Convert.ToString(((TextBox)(e.Item.FindControl("txtTime"))).Text);
string T_UserAddress = dr["T_UserAddress"].ToString();
DataTable dt;
if (Session["Cart"] != null)
{
dt = (DataTable)Session["Cart"];//进行相应的类型转换
}
else
{
dt = new DataTable();
DataColumn dc;
dc = new DataColumn("ProductID", typeof(String));
dt.Columns.Add(dc);
dc = new DataColumn("ProductName", typeof(String));
dt.Columns.Add(dc);
dc = new DataColumn("Price", typeof(double));
dt.Columns.Add(dc);
dc = new DataColumn("Time", typeof(String));
dt.Columns.Add(dc);
dc = new DataColumn("T_UserAddress", typeof(String));
dt.Columns.Add(dc);
}
bool IsExist = false;//!!!!!!!!!!!!!!!有错!!添加不了多的商品!!!ok!!!!!!!!!!!!
for (int I = 0; I < dt.Rows.Count; I++)
{ if(dt.Rows[I]["ProductID"].ToString()==ProductID)//hahhahahah!!!!!1
{
IsExist = true;
dt.Rows[I]["Time"] = Convert.ToInt32(dt.Rows[I]["Time"].ToString());
dt.Rows[I]["T_UserAddress"] = Convert.ToInt32(dt.Rows[I]["T_UserAddress"].ToString());
break;
}
}
if (!IsExist)
{
DataRow drNew = dt.NewRow();
drNew["ProductID"] = ProductID;
drNew["ProductName"] = ProductName + "(" + Color + ")";
drNew["Price"] = Price;
drNew["Time"]=Time;
drNew["T_UserAddress"] = T_UserAddress;
dt.Rows.Add(drNew);
}
Session["Cart"] = dt;//到下一个shoppingcart中
Response.Redirect("AddCartSuccess.aspx");
}
}
}
我后面的shoppingcart.aspx就总是跳转回Products.aspx