指数超出范围。 GridView在LoginView中提供错误的行计数

时间:2016-08-12 14:39:57

标签: c# asp.net

我在LoginView中有一个GridView,当我点击编辑按钮时,我遇到了这个问题。我知道我需要使用FindControl来访问LoginView中的对象,所以我已经这样做了。但是现在我遇到了这个IndexOutOfRangeException错误。我将索引和DataKeys.Count发布到错误标签上,但我没有看到问题。但它只出现在xx.Rows[e.RowIndex]。如果我只使用e.RowIndex(例如:int index = e.RowIndex.ToString();),我就不会得到同样的错误。所以我把它缩小到了那个但是无法从这里弄明白。如果您需要我发布代码的任何其他部分,请告诉我。

给我拟合的线是GridViewRow row = gv.Rows [e.RowIndex];线。

protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{
    GridView gv = ReviewLoginView.FindControl("gvReview") as GridView;
    if (gv.DataKeys.Count > e.RowIndex)
    {
        GridViewRow row = gv.Rows[e.RowIndex];

        string Id = (row.FindControl("lblID") as Label).Text;

        string constr = System.Configuration.ConfigurationManager.AppSettings["DefaultConnection"];
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("cardReview"))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@id", Id);

                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
        }
        gv.EditIndex = -1;
        this.BindGrid();
    }
}

0 个答案:

没有答案