应用场景:添加商品参数时往hash里面添加,在读取购物车时往datatable里面增加临时字段的问题。
问题:新添加的两个字段不成功,出现“未将对象引用设置到对象的事例”
添加到hash代码片段
Hashtable hash; string pid = Request.Params["ID"]; string cz= Request.Params["cz"]; string zq=Request.Params["zq"]; if (Session["Car"] == null) { //如果用户没有分配购物车 hash = new Hashtable(); //新生成一个 // hash.Add(e.CommandArgument, 1); //添加一个商品 // Session["Cart"] = hash; //分配给用户 } else { //用户已经有购物车 hash = (Hashtable)Session["Car"];//得到购物车的hash表 } if (!hash.Contains(pid))//购物车中已有此商品,商品数量加1 { hash.Add(pid, 1);//如果没有此商品,则新添加一个项 //hash.Add(cz,1); //hash.Add(zq, 1); } else { int count = Convert.ToInt32(hash[pid].ToString());//得到该商品的数量 hash[pid] = (count + 1);//商品数量加1 } Session["Car"] = hash; Response.Write("10");
购物车dt代码片段
DataSet ds = bFullPros.GetList(" f_prosid in" + Products); //通过商品ID查到datatbale表 DataTable Table1 = new DataTable(); Table1 = ds.Tables[0]; // Table1 = ds.Tables["product"]; Table1.Columns.Add(new DataColumn("C_count", System.Type.GetType("System.Int32")));//添加临时字段(此处添加成功了) //Table1.Columns.Add(new DataColumn("cz", System.Type.GetType("System.Int32"))); //Table1.Columns.Add(new DataColumn("zq", System.Type.GetType("System.Int32"))); //以上两个注释的添加不成功 DataColumn[] Keys = { Table1.Columns["f_prosid"] }; Table1.PrimaryKey = Keys; foreach (string X in Hash.Keys) { Table1.Rows.Find(X)["C_count"] = Hash[X]; //Table1.Rows.Find(X)["cz"] = Hash[X]; //Table1.Rows.Find(X)["zq"] = Hash[X]; } Table1.Columns.Add(new DataColumn("C_totalprice", System.Type.GetType("System.Double"), "f_Pros_39*C_count"));