我在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();
}
}