+ ((TextBox)(GridView2.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "',cs="
+ ((TextBox)(GridView2.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() + ",jddj="
+ ((TextBox)(GridView2.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim() + " where ylcd='"
+ ylcd.ToString() + "' and jh='" + jh + "' and sjrq=to_date('" + sjrq + "','yyyy-mm-dd')";
Response.Write(sqlstr);
ora_db.NoreturnSql(sqlstr);
GridView2.EditIndex = -1;
bind();
}
GridView2.DataKeyNames是ylcd,我用Response.Write(sqlstr)显示出的ylcd、cs、jddj是没改变之前的,我是新手请多多帮助!!!谢谢!
------最佳解决方案--------------------------------------------------------
点击其他的ylcd的值都不变吗?
ylcd.ToString() 改成GridView1.DataKeys[e.RowIndex].Value.ToString()
参考
http://blog.csdn.net/21aspnet/article/details/1540301 看来你就会了。
------其他解决方案--------------------------------------------------------
page——load里面加了!ispostback了吗
------其他解决方案--------------------------------------------------------
太好了,解决了,是2楼的回答帮助了我,因为我要改主键,所以在RowEditing中写了ylcd = ((TextBox)(GridView2.Rows[e.NewEditIndex].Cells[3].Controls[0])).Text.ToString().Trim();
因此和ylcd.ToString() 改成GridView1.DataKeys[e.RowIndex].Value.ToString(),没有关系。不过也谢谢一楼了。
最后问一个问题,为什么bing()没放在 !ispostback就不好使呢,怕结贴后没法问了,所以问完了就给结贴,请谅解。
------其他解决方案--------------------------------------------------------
我试过在page——load里面去掉bing()方法也好使。为什么?
------其他解决方案--------------------------------------------------------
加ispostback是判断是否是首次加载,你没加,当你点击修改时,又重新加载了page_load里面的GridView绑定方法,所以你所取到的值都是绑定的值,而非你在页面输入的值.
既然你没在page_load里面绑定GridView数据,当然是可以修改的
------其他解决方案--------------------------------------------------------
可是我已经在RowUpdating中执行了ora_db.NoreturnSql(sqlstr)
和 bind()方法
ora_db.NoreturnSql是个update的方法: public void NoreturnSql(string Sql)
{
OpenSql();
Cm = new OracleCommand(Sql, Cn);
Cm.ExecuteNonQuery();
CloseSql();
}
应该已经先执行update了,为什么获取的是旧的值,这时候应该还没到page_load执行吧。而且,在后面紧接着就bind()了。这和page_load有什么关系呢?
实在是想整明白,请不要先啰嗦。呵呵
------其他解决方案--------------------------------------------------------
你的意思是当我点击修改时先执行加载了page_load后再执行RowUpdating中的语句吗?