求助!!!如何解决“应用程序中的服务器错误——索引超出范围。必须为非负值并小于集合大小”问题?
点击“删除”出现如下错误提示,如何解决啊?
“/MyElect”应用程序中的服务器错误。
--------------------------------------------------------------------------------
索引超出范围。必须为非负值并小于集合大小。
参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
源错误:
行 69: protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
行 70: {
行 71: string courseID = GridView1.DataKeys[e.RowIndex].Value.ToString();
行 72: SqlConnection conn = new SqlConnection("server=.;database=Elect;Integrated Security=SSPI");
行 73: string sqlString = String.Format("delete from Courses where CourseID={0}",courseID);
源文件: d:\大学课程\大三第二学期课程\ASP\A\第10周第1次课\MyElect\CourseManage.aspx.cs 行: 71
堆栈跟踪:
[ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
System.Collections.ArrayList.get_Item(Int32 index) +7487608
System.Web.UI.WebControls.DataKeyArray.get_Item(Int32 index) +12
CourseManage.GridView1_RowDeleting(Object sender, GridViewDeleteEventArgs e) in d:\大学课程\大三第二学期课程\ASP\A\第10周第1次课\MyElect\CourseManage.aspx.cs:71
System.Web.UI.WebControls.GridView.OnRowDeleting(GridViewDeleteEventArgs e) +102
System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow row, Int32 rowIndex) +566
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +820
System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +87
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +123
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.ImageButton.OnCommand(CommandEventArgs e) +88
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +178
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2863
--------------------------------------------------------------------------------
GridView1_RowDeleting代码如下:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string courseID = GridView1.DataKeys[e.RowIndex].Value.ToString();
SqlConnection conn = new SqlConnection("server=.;database=Elect;Integrated Security=SSPI");
string sqlString = String.Format("delete from Courses where CourseID={0}",courseID);
SqlCommand cmd = new SqlCommand(sqlString, conn);
int count = cmd.ExecuteNonQuery();
if (count > 0)
{
Response.Write("<script>alert('删除成功')</script>");
}
conn.Close();
BindGrid();
}