首页 新闻 会员 周边

GridView+DataSet指定的参数已超出有效值的范围。

0
悬赏园豆:10 [已关闭问题]

    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();


    }

 

问题补充: DataKeyNames也设置了 还是一样的问题
@HZS@的主页 @HZS@ | 初学一级 | 园豆:180
提问于:2009-03-31 11:04
< >
分享
其他回答(2)
0

首先你判断一下你获得 GridView1.EditIndex 值是否真的有效,因为这个事情可能在你刚加载界面的时候就会执行,那时候的 GridView1.EditIndex 的值可能是一个负数或无限大的数,这样就会出现这样的问题,你要做个基本的判断,如果 GridView1.EditIndex 不在有限的范围内,return

Allan Bolt | 园豆:205 (菜鸟二级) | 2009-03-31 11:15
0

((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]……

子夜星辰 | 园豆:1613 (小虾三级) | 2009-03-31 11:55
0

首先,你不能使用拼接sql字符串的方向。
另外,增删改查的操作最好封装起来,不要每次都建Connection,Command
你遇到的问题应该是小问题,你试着去掉其他代码,
Response.Write(((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim());
看看哪一列取不到,还是都取不到。

大气象 | 园豆:79 (初学一级) | 2009-03-31 15:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册