private void DataGrid_ItemCommand(object source SystemWebUIWebControlsDataGridCommandEventArgs e)//假设前面购买命令是一个命令名为buy的LinkButton {//关键建立和加如购物车 string pid=thisDataGridDataKeys[eItemItemIndex]ToString();//取出宠物编号 if(eCommandName==buy)//如果命令名是 buy说明是购买 { if(Session[bus]==null)//先就得检查购物车是否存在如果不存在就建立呗 { SystemCollectionsHashtable ht=new Hashtable();//先建立一个哈希表 htAdd(pid);//哈希表中的两个列一个key一个value 我们就前面放宠物编号后面放购买数量好了预设置为1 Session[bus]=ht;//将哈希表赋值给Session对象 } else//如果存在的话 { Hashtable ht=(Hashtable)Session[bus];//使用强制类型转换再将Session[bus]赋值给哈希表对象 ht if(ht[pid]==null)//如果哈希表中对应的ID没有 { ht[pid]=;//那就直接给他设为1 } else//如果已经有对应的ID { ht[pid]=(int)ht[pid]+;//那么就把原来的取出来再加上1 } Session[bus]=ht;//最后再更新Session 对象 } } } 而读取的方法更简单了如下: thisDataListDataSource=(Hashtable)Session[bus];//直接利用哈希表作为数据源 thisDataListDataBind();//绑定一下 更新数量 private void LinkButton_Click(object sender SystemEventArgs e) { foreach(DataListItem dl in thisDataListItems)//遍历集合 { TextBox tb=(TextBox)dlFindControl(TextBox);//找到文本框 int newpid=ConvertToInt(tbTextToString());//查出文本框里面的值 Label label=(Label)dlFindControl(key);//找到装载哈希表key字段的那个控件 string pid=labelTextToString();//把他的值拿出来 Hashtable ht=(Hashtable)Session[bus];//把session[bus]对象赋值给哈希表 ht int oldpid=(int)ht[pid];//求得原来的数量 if(newpid!=oldpid)//如果文本框里的值不等于原来的数量就用新的更换到哈希表中的值 { ht[pid]=newpid; } Session[bus]=ht;//最后再更新Session 对象 } } |