C# 网格视图错误:指定的参数超出了有效值的范围。更新 SQL Server 表时

C# Grid view error : Specified argument was out of the range of valid values. when updating a SQL Server table

提问人:Haya Alhuraib 提问时间:10/31/2023 最后编辑:marc_sHaya Alhuraib 更新时间:10/31/2023 访问量:33

问:

我想更新网格行更新事件的员工详细信息,但我收到以下错误:“System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围。 参数名称:索引”

代码aspx:

<asp:Panel ID="Panel1" runat="server" Visible="False">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID, TagName" ShowFooter="True" EmptyDataText="No Perticular Record Found" AllowPaging="True" OnRowEditing="GridView1_RowEditing" OnPageIndexChanging="Grid1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating="GridView1_RowUpdating">
      <Columns>
          <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" ReadOnly="True" />
          <asp:BoundField DataField="TagName" HeaderText="TagName" SortExpression="TagName"  ReadOnly="True"/>
          <asp:BoundField DataField="Position" HeaderText="Position" SortExpression="Position" />
          <asp:BoundField DataField="Office" HeaderText="Office" SortExpression="Office" />
          <asp:BoundField DataField="Salary"  HeaderText="Salary" SortExpression="Salary" />
    
          <asp:CommandField ButtonType="Link"  ItemStyle-CssClass="editClass"  ShowEditButton="True" />
        </Columns>
    </asp:GridView>       
</asp:Panel>

C# 代码:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];

    int ID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());
    string TagName = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
    string position = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
    string office = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
    string salary = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text;

    SqlConnection conn = new SqlConnection(CS);
    conn.Open();

    SqlCommand cmd = new SqlCommand("update  Employee  set Position='" + position + "', Office='" + office + "',Salary=" + salary+" where ID="+ ID +" TagName='"+ TagName + "'" , conn);

    int t = cmd.ExecuteNonQuery();

    if (t > 0)
    {
        Response.Write("<script> alert('Data has Updated')</script>");
        GridView1.EditIndex = -1;
        Page_Load();
    }
}

请帮帮我。提前感谢您抽出时间接受采访。;)

C# asp.net SQL-Server GridView 部署

评论

0赞 Ryan Wilson 10/31/2023
价值是什么??您是否单步执行了代码?例外情况意味着您超出了集合的边界。e.RowIndex
0赞 jdweng 10/31/2023
应用程序启动时是否出现错误?为 RowIndex >= 0 添加测试。构造网格视图时,可能会出现异常。Rowindex = -1,直到添加列。
2赞 marc_s 10/31/2023
SQL 注入警报 - 你不应该将你的 SQL 语句连接在一起 - 改用参数化查询来避免 SQL 注入 - 查看 Little Bobby Tables
0赞 AlwaysLearning 10/31/2023
哪一行引发了异常?
0赞 Haya Alhuraib 11/1/2023
以下行引发错误:string TagName = ((TextBox)GridView1.Rows[e.RowIndex]。细胞[1]。控件[0])。发短信;

答: 暂无答案