日期:2014-05-18  浏览次数:20469 次

我用dataGrid做了个购物车,但就是无法更新,
我已经单步调试过了,
没有什么问题,可是等页面一刷新,
我的更改的数据又还原了,
大家有遇到过吗?
大概是什么原因啊?
主要代码如下:
private   void   Page_Load(object   sender,   System.EventArgs   e)
{if(!Page.IsPostBack)
{BindData();
}}
private   void   Button1_Click(object   sender,   System.EventArgs   e)
{bll.shoppingcart   cart=   new   shoppingcart();
string   cartid=cart.GetShoppingCartId();
for   (int   i=0;i <DataGrid1.Items.Count;i++)
{
TextBox   quantity=(TextBox)DataGrid1.Items[i].FindControl( "TextBox1 ");
CheckBox   delete=(CheckBox)DataGrid1.Items[i].FindControl( "CheckBox1 ");
int   quantity1;
try
{quantity1=Int32.Parse(quantity.Text);
if(quantity1!=Convert.ToInt32(DataGrid1.DataKeys[i])   ||   delete.Checked==true)
{
  Label   productid=(Label)DataGrid1.Items[i].FindControl( "Label2 ");
  if(int.Parse(quantity.Text)==0||delete.Checked==true)
  {cart.DeleteItem(cartid,Int32.Parse(productid.Text));}
  else
  {   cart.UpdateItem(cartid,Convert.ToInt32(productid.Text),Convert.ToInt32(quantity.Text));   }   }}
BindData(); }
}

------解决方案--------------------
数据从session中取出了没有,有没有放进去这都要检查一下
------解决方案--------------------
你给的代码应该没问题,查查其他东西
------解决方案--------------------
你购物车用数据库存的?是的话看你存的代码。有没有存进去。
------解决方案--------------------
if(quantity1!=Convert.ToInt32(DataGrid1.DataKeys[i]) || delete.Checked==true)

if(int.Parse(quantity.Text)==0||delete.Checked==true)

===================================
这两个条件肯定是 "或 "不是 "与 "?

------解决方案--------------------
那我就来接分了
------解决方案--------------------
确实执行数据更新没有?

检查 ExecuteNonQuery() > 0 ?