问题描述
我的代码是这样的protectedvoidGrid_Userresearch_RowUpdating(objectsender,GridViewUpdateEventArgse){stringid=this.Grid_Userresearch.Rows[e.RowIndex].Cells[0].Text.Trim();stringupdatestr=((DropDownList)this.Grid_Userresearch.Rows[e.RowIndex].FindControl("workplace2")).Text;stringupdatestrphone=((TextBox)this.Grid_Userresearch.Rows[e.RowIndex].FindControl("Phone")).Text;stringupdatestrorgname=((TextBox)this.Grid_Userresearch.Rows[e.RowIndex].FindControl("Name")).Text;stringupdateid=this.Grid_Userresearch.Rows[e.RowIndex].Cells[0].Text;stringstrUpdate1="UPDATEUserIforsetName='"+updatestrorgname+"',Phone='"+updatestrphone+"'whereDesigningOrgId='"+updateid+"'";SqlConnectionmyConn=CC.GetConnection();myConn.Open();SqlCommandmyCmd_update1=newSqlCommand(strUpdate1,myConn);myCmd_update1.ExecuteNonQuery();myCmd_update1.Dispose();myConn.Dispose();Grid_Userresearch.EditIndex=-1;gridview();Visibleexample();xingbiehanzi();}求大神帮忙解决下谢谢啦·~
解决方案
解决方案二:
在代码myCmd_update1.ExecuteNonQuery()这里调试你的strUpdate1变量的值,以及你的数据库中直接select这条记录看看(执行ExecuteNonQuery之前的)原值。贴出调试截屏。另外,执行Update之后为什么要重新绑定gridview?这是你自己想象的,还是真的在业务逻辑流程设计上就需要刷新gridview(而不是继续编辑原来的gridview)?
解决方案三:
当你的gridview有(比如说5)条记录,假设第4条被设置为EditIndex,然后用户在浏览器上修改,然后提交,然后设置为EditIndex=-1(恢复gridview浏览状态),这整个过程中其实都不重新绑定gridview。也许这个过程中(比如说在在用户正在浏览器上修改数据而还没有提交)可能数据库已经被插入到了有150条新记录了,那么此页面上也并不刷新gridview去显示另外145条新记录。除非在业务设计上本身就有刷新gridview的逻辑,例如通过第三方机制收到了“数据表已经修改,需要刷新gridview”的消息通知,那么gridview才应该刷新。如果动不动就重新查询和绑定数据库,由于asp.net程序本来就是“动不动就回发重建page页面”的机制,那么你的asp.net应用将会慢得让用户立刻就想鄙夷它。编写asp.net程序时容易滥用“查询数据库并且绑定到列表控件”,例如以为写一个gridview();Visibleexample();xingbiehanzi();
三条语句好像挺容易。其实这通常是错误的做法,是让你的asp.net页面用户体验很差的主要原因之一。
解决方案四:
这种,一般看sql语句的最终生成,就行了。
解决方案五:
strUpdate1看这个的值是什么?或者你贴个你报了什么错误。