作者:一首老歌L_798 | 来源:互联网 | 2023-09-03 10:56
asp.net购物车实现-------结合session方式原文地址:http:blog.csdn.netw809026418archive200903083969272.asp
asp.net购物车实现-------结合session方式
原文地址:http://blog.csdn.net/w809026418/archive/2009/03/08/3969272.aspx
我改良了一下代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
if (Session["Cart"] == null)
{
this.BuildCart();
}
else
{
DataTable cart = Session["Cart"] as DataTable;
if (this.ExistBook(cart))
{
this.BuildSession(cart);
}
}
GridView1.DataSource = Session["Cart"];
GridView1.DataBind();
}
public bool ExistBook(DataTable cart)
{
foreach (DataRow dr in cart.Rows)
{
if (dr["BookName"].ToString().Equals(this.txtKeyWord.Text.Trim()))
{
Session["Cart"] = cart;
}
}
return true;
}
//新建购物车表
public void BuildCart()
{
DataTable cart = new DataTable();
cart.Columns.Add("BookName");
this.BuildSession(cart);
}
// 添加新书
public void BuildSession(DataTable cart)
{
DataRow dr = cart.NewRow();
dr["BookName"] = this.txtKeyWord.Text.Trim();
cart.Rows.Add(dr);
Session["Cart"] = cart;
}
===================
现在问题是,我每次点击Button1_Click事件,都可以添加的,但不能过滤重复的,即if (this.ExistBook(cart))
这个代码没有做到“如果有重复数据,就添加不了”的效果。
所以请大侠们看看错在哪儿?
15 个解决方案
public bool ExistBook(DataTable cart)
{
foreach (DataRow dr in cart.Rows)
{
if (dr["BookName"].ToString().Equals(this.txtKeyWord.Text.Trim()))
{
Session["Cart"] = cart;
}
}
return true;
}
你始终返回 true 啊
public bool ExistBook(DataTable cart)
{
foreach (DataRow dr in cart.Rows)
{
if (dr["BookName"].ToString().Equals(this.txtKeyWord.Text.Trim()))
{
Session["Cart"] = cart;
}
}
return true;
}
光有true的返回,没有FALSE的返回啊
GridView1.DataSource = Session["Cart"];
GridView1.DataBind();
这两句楼主好像放错位置了,好像应该放在else里面吧
if (Session["Cart"] == null)
{
this.BuildCart();
}
else
{
DataTable cart = Session["Cart"] as DataTable;
if (this.ExistBook(cart))
{
this.BuildSession(cart);
}
GridView1.DataSource = Session["Cart"];
GridView1.DataBind();
}
}