大家我好! 我遇到一个简单的问题,请大家帮帮忙!!
为什么我每次更新时都是得到它的原来的值(就是第一次给DataGrid的值),根本就更新不了代码如下:
Trace.Warn(sql);这个每次输出的都是原来的值,所以就更新不了,这是为什么啊??
protected void Gridupdate(Object sender,DataGridCommandEventArgs e) {
string sql,a,b;
a=((TextBox)e.Item.Cells[1].Controls[0]).Text;
b=((TextBox)e.Item.Cells[2].Controls[0]).Text;
sql = "update cpxlh set cpxlh= ' " + a + " ' , cpbh= ' " + b + " ' where id= " +
(int)dg.DataKeys[e.Item.ItemIndex];
Trace.Warn(sql);
OleDbCommand comm = new OleDbCommand();
comm.CommandText = sql;
comm.Connection = conn;
try
{
comm.ExecuteNonQuery();
Response.Write( " <script language=javascript> alert( '修改成功! '); </script> ");
dg.EditItemIndex = -1;
gridbind();
}
catch (OleDbException)
{
Response.Write( " <script language=javascript> alert( '修改失败! ') </script> ");
}
finally {
gridbind();
comm.Connection.Close();
}
}
[解决办法]
设断点跟踪下,看下赊购凝成的sql语句是否有问题.
即确定下列变量是否有值.
a=((TextBox)e.Item.Cells[1].Controls[0]).Text;
b=((TextBox)e.Item.Cells[2].Controls[0]).Text;
(int)dg.DataKeys[e.Item.ItemIndex]
[解决办法]
大概是Page_Load里没有if(!Page.IsPostBack){Bind()}吧。
[解决办法]
finally {
gridbind();
comm.Connection.Close(); 这两个语句顺序调换下其次要做以下改动
}
1 。gridbind方法要加个conn的open方法,2 这个 comm.Connection.Close();换成公有的connection即conn的close方法,然后
[解决办法]
按你说的应该是数据库更新了但是显示没有更新,如果刷新下应该可以看到数据被更新了