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))
这个代码没有做到“如果有重复数据,就添加不了”的效果。
所以请大侠们看看错在哪儿?
原文地址: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))
这个代码没有做到“如果有重复数据,就添加不了”的效果。
所以请大侠们看看错在哪儿?
解决方案 »
- Cookie开发后,在本地登陆一切正常,然而传到服务器就出现CookIE对象里的KEY没有建立,连NULL都不是。晕了,有代码!请高手帮忙!
- 这个是什么错误???An unhandled exception has occurred.
- 网站刚做好等待发布,遇到下列问题,来者有分!
- asp.net打开速度比asp还慢
- 数据循环
- 今天看见个网站,请大家帮忙解释解释--功能怎么实现的。====================
- 加了一角,撒分.
- 请问怎么给文件改名?
- 在做水晶报表时,谁碰到过这种错误?“查询引擎错误:“C:\WINNT\TEMP\temp_b216489b-76f7-4cb7-9ec8-878bce897931.rpt” ”
- 为什么用Request对象会出错?
- WebClient的问题 再次提问!!
- asp.net mvc可以实现form身份验证吗?
{
foreach (DataRow dr in cart.Rows)
{
if (dr["BookName"].ToString().Equals(this.txtKeyWord.Text.Trim()))
{
Session["Cart"] = cart;
}
}
return true;
}你始终返回 true 啊
{
foreach (DataRow dr in cart.Rows)
{
if (dr["BookName"].ToString().Equals(this.txtKeyWord.Text.Trim()))
{
Session["Cart"] = cart;
}
}
return true;
}
光有true的返回,没有FALSE的返回啊
{
foreach (DataRow dr in cart.Rows)
{
if (dr["BookName"].ToString().Equals(this.txtKeyWord.Text.Trim()))
{
Session["Cart"] = cart;
}
else
{
return false;
} }
return true;
}试试。
public int ExistBook(DataTable cart)
{
int i=0;
foreach (DataRow dr in cart.Rows)
{
if (dr["BookName"].ToString().Equals(this.txtKeyWord.Text.Trim()))
{
Session["Cart"] = cart;
i=1;
}
}
}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)==0)//不存在重复数据
{
this.BuildSession(cart);
}
}
GridView1.DataSource = Session["Cart"];
GridView1.DataBind();
}
这里提示“并非所有的代码路径都返回值”
忘写了一句
public int ExistBook(DataTable cart)
{
int i=0;
foreach (DataRow dr in cart.Rows)
{
if (dr["BookName"].ToString().Equals(this.txtKeyWord.Text.Trim()))
{
Session["Cart"] = cart;
i=1;
}
}
return i;
}
if (!this.ExistBook(cart))
{
this.BuildSession(cart);
}
public bool ExistBook(DataTable cart)
{
foreach (DataRow dr in cart.Rows)
{
if (dr["BookName"].ToString().Equals(this.txtKeyWord.Text.Trim()))
{
return true;
}
}
return false;
}
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(); }
}