使用DataGrid编辑记录时的ArgumentOutOfRangeException

时间:2014-05-10 10:27:07

标签: c# asp.net sql-server-2008 gridview

美好的一天。我使用asp.net C#进行编码,我很难使用gridview编辑保存在sql server数据库中的记录。这是我的代码

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    camConnection.ConnectionString = SqlDataSource1.ConnectionString;
    camSqlDataAdapter.SelectCommand = new SqlCommand(SqlDataSource1.SelectCommand, camConnection);
    camSqlDataAdapter.Fill(camDataSet);
    GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];

    TextBox pid1 = (TextBox)row.Cells[1].Controls[0];
    TextBox pname1 = (TextBox)row.Cells[2].Controls[0];
    TextBox pdesc1 = (TextBox)row.Cells[3].Controls[0];
    TextBox pquan1 = (TextBox)row.Cells[4].Controls[0];
    TextBox pprice1 = (TextBox)row.Cells[5].Controls[0];

    GridView1.EditIndex = -1;
    camConnection.Open();

    SqlCommand cmd = new System.Data.SqlClient.SqlCommand("update productInfo set ProductName='" + Convert.ToString(pname1.Text) + "', Description='" + Convert.ToString(pdesc1.Text) + "', Quantity='" + Convert.ToString(pquan1.Text) + "', Price='" + Convert.ToString(pprice1.Text) + "' where ID='" + pid1.Text + "' ", camConnection);
    cmd.ExecuteNonQuery();

    camConnection.Close();
    GridView1.DataSource = SqlDataSource1;
    GridView1.DataBind();
}

当我执行代码并在gridview中编辑记录时,点击更新链接,发生错误说:

  

指定的参数超出了有效值的范围。   参数名称:index

2 个答案:

答案 0 :(得分:0)

您的Gridview中可能有些字段为空。 所以当你写:

TextBox pid1 = (TextBox)row.Cells[1].Controls[0];

代码正在寻找一些价值。如果row.Cells[1].Controls[0]为null,则会显示超出范围的异常。 希望这会有所帮助。

答案 1 :(得分:-1)

您的Gridview中可能有些字段为空。所以当你写:

TextBox pid1 =(TextBox)row.Cells [1] .Controls [0]; 代码正在寻找一些价值。如果row.Cells [1] .Controls [0]为null,它将显示超出范围的异常。希望这会有所帮助。