protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
conn = new SqlConnection(con);
conn.Open();
string sqlstr = "update jz set dw='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',fxsl='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "',ysk='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "',ssk='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() + "', fxf='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim() + "',jl='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString().Trim() + "',sksj='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[7].Controls[0])).Text.ToString().Trim() + "',skfs='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[8].Controls[0])).Text.ToString().Trim() + "' where szd='"
+ GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
com = new SqlCommand(sqlstr, conn);
com.ExecuteNonQuery();
conn.Close();
GridView1.EditIndex = -1;
bind();
}
首先你判断一下你获得 GridView1.EditIndex 值是否真的有效,因为这个事情可能在你刚加载界面的时候就会执行,那时候的 GridView1.EditIndex 的值可能是一个负数或无限大的数,这样就会出现这样的问题,你要做个基本的判断,如果 GridView1.EditIndex 不在有限的范围内,return
((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])这句有问题!
呵呵!貌似你的Cells[*]得从0开始,Cells[0],Cells[1],Cells[2],Cells[3],Cells[4],Cells[5],Cells[6],Cells[7]……
首先,你不能使用拼接sql字符串的方向。
另外,增删改查的操作最好封装起来,不要每次都建Connection,Command
你遇到的问题应该是小问题,你试着去掉其他代码,
Response.Write(((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim());
看看哪一列取不到,还是都取不到。