单击更新的时候出现错误:
“/WebSite2”应用程序中的服务器错误。
--------------------------------------------------------------------------------指定的参数已超出有效值的范围。
参数名: index 
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。
参数名: index前台:
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            onrowcancelingedit="GridView1_RowCancelingEdit" 
            onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
            onrowupdating="GridView1_RowUpdating" DataKeyNames="ID">
            <Columns>
                <asp:BoundField DataField="ID" HeaderText="ID" />
                <asp:BoundField DataField="Name" HeaderText="名字" />
                <asp:BoundField DataField="Sex" HeaderText="性别" />
                <asp:CommandField ShowSelectButton="True" />
                <asp:CommandField ShowEditButton="True" />
            </Columns>
        </asp:GridView>
后台:
        sqlcon = new SqlConnection();
        string sqlstr = "update info set Name='"
            + ((TextBox)(GridView1.Rows[1].Cells[0].Controls[0])).Text.ToString().Trim() + "',Sex='"
            + ((TextBox)(GridView1.Rows[2].Cells[1].Controls[0])).Text.ToString().Trim() + "' where ID='"
            + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
        sqlcom = new SqlCommand(sqlstr, sqlcon);
        sqlcon.Open();
        sqlcom.ExecuteNonQuery();
        sqlcon.Close();
        GridView1.EditIndex = -1;
        bind();

解决方案 »

  1.   

    Rows[x].Cells[x].Controls[x]这种写法导致的问题
      

  2.   

    Rows[1]
    Rows[2]怎么同时会更新2行?
      

  3.   

    GridView1.Rows[1].Cells[0].Controls[0]
    GridView1.Rows[1].Cells[1].Controls[0]
    判断有几行数据
      

  4.   

    我数据库就只有字段内容:
    ID    Name    Sex
    1     张三      男
    2     李四      女
      

  5.   

    GridView1.Rows[0]下标是从0开始的
      

  6.   

      + ((TextBox)(GridView1.Rows[1].Cells[0].Controls[0])).Text.ToString().Trim() + "',Sex='"
      + ((TextBox)(GridView1.Rows[2].Cells[1].Controls[0])).Text.ToString().Trim() + "' where ID='"Rows  數據有幾行???
    還是動態的???
      

  7.   

    如果是在RowUpdating事件下:应该是:
            string sqlstr = "update info set Name='"
                + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString().Trim() + "',Sex='"
                + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "' where ID='"
                + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
      

  8.   

    包括题头有3行,因为是测试,所以数据量很少:
    运行之后就显示这样:
    ID Name Sex
    1 张三 男
    2 李四 女
      

  9.   

    GridView1.Rows[2].Cells[1].Controls[0] 已经是第三行了
    而你根本没有第三行
    问题在这