我用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 ?