asp.net代码中出现的一个问题 50
我点击gridview控件上的删除按钮,出现了以下错误,请高手指点指点代码错在了哪里?????索引超出范围。必须为非负值并小于集合大小。参数名:index说明:执行当前W...
我点击gridview控件上的删除按钮,出现了以下错误,请高手指点指点代码错在了哪里?????
索引超出范围。必须为非负值并小于集合大小。
参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
源错误:
行 46: protected void gvOrderInfo_RowDeleting(object sender, GridViewDeleteEventArgs e)
行 47: {
行 48: string sqlstr = "delete from tb_OrderInfo where OrderID='"+gvOrderInfo.DataKeys[e.RowIndex].Value+"'";
行 49: sqloperate.DataCom(sqlstr);
行 50: Response.Redirect("OrderManage.aspx");
源文件: d:\NetShop\AdminManage\OrderManage.aspx.cs 行: 48
堆栈跟踪:
[ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
System.Collections.ArrayList.get_Item(Int32 index) +2776477
System.Web.UI.WebControls.DataKeyArray.get_Item(Int32 index) +9
AdminManage_OrderManage.gvOrderInfo_RowDeleting(Object sender, GridViewDeleteEventArgs e) in d:\NetShop\AdminManage\OrderManage.aspx.cs:48
System.Web.UI.WebControls.GridView.OnRowDeleting(GridViewDeleteEventArgs e) +99
System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow row, Int32 rowIndex) +610
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +1152
System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +190
System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +172
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4919
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42 展开
索引超出范围。必须为非负值并小于集合大小。
参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
源错误:
行 46: protected void gvOrderInfo_RowDeleting(object sender, GridViewDeleteEventArgs e)
行 47: {
行 48: string sqlstr = "delete from tb_OrderInfo where OrderID='"+gvOrderInfo.DataKeys[e.RowIndex].Value+"'";
行 49: sqloperate.DataCom(sqlstr);
行 50: Response.Redirect("OrderManage.aspx");
源文件: d:\NetShop\AdminManage\OrderManage.aspx.cs 行: 48
堆栈跟踪:
[ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
System.Collections.ArrayList.get_Item(Int32 index) +2776477
System.Web.UI.WebControls.DataKeyArray.get_Item(Int32 index) +9
AdminManage_OrderManage.gvOrderInfo_RowDeleting(Object sender, GridViewDeleteEventArgs e) in d:\NetShop\AdminManage\OrderManage.aspx.cs:48
System.Web.UI.WebControls.GridView.OnRowDeleting(GridViewDeleteEventArgs e) +99
System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow row, Int32 rowIndex) +610
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +1152
System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +190
System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +172
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4919
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42 展开
6个回答
展开全部
原因是你的 index过界了 (规定index>=-1)的,你检查下你这个gridview初始化时是否指定过index的什么值。
最好设置断点跟踪下index的变化过程。
一定不是你粘这块代码的原因。你再找找。
这是我正在用的代码,问题不在这。
protected void itemdv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int itemID = Convert.ToInt32(itemdv.DataKeys[e.RowIndex].Value.ToString());
Item it = new Item();
it.delItem(itemID,Label1);
Response.Redirect("~/clsDefault.aspx?id="+Request.QueryString["id"].ToString());
最好设置断点跟踪下index的变化过程。
一定不是你粘这块代码的原因。你再找找。
这是我正在用的代码,问题不在这。
protected void itemdv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int itemID = Convert.ToInt32(itemdv.DataKeys[e.RowIndex].Value.ToString());
Item it = new Item();
it.delItem(itemID,Label1);
Response.Redirect("~/clsDefault.aspx?id="+Request.QueryString["id"].ToString());
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先看看你的OrderId 是不是int类型。
若是就应该这样写:string sqlstr = "delete from tb_OrderInfo where OrderID=" + Convert.ToInt32(gvOrderInfo.DataKeys[e.RowIndex].Value) + "";
若是string类型。则说明你调用的方法有错。
希望以上的回答对你有所帮助!!!
若是就应该这样写:string sqlstr = "delete from tb_OrderInfo where OrderID=" + Convert.ToInt32(gvOrderInfo.DataKeys[e.RowIndex].Value) + "";
若是string类型。则说明你调用的方法有错。
希望以上的回答对你有所帮助!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我记得抱这个错!是因为你删除行的索引与你指定的索引不符
就比如说你指定ID为索引 你的ID=5
其实你的gridview里面只有3行!或者只有1行!这会你删除或者编辑时!就抱索引超出范围。必须为非负值并小于集合大小
就比如说你指定ID为索引 你的ID=5
其实你的gridview里面只有3行!或者只有1行!这会你删除或者编辑时!就抱索引超出范围。必须为非负值并小于集合大小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是不是没有设置DataKeys,你在gvOrderInfo的属性栏中找到“数据项”,然后在设置一下表的DataKeys(一般是id)试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没有判断GV的标题 他的标题没有数据 所以他报下标越界错误
if (e.Row.RowType == DataControlRowType.DataRow)
{
添加删除按钮;
}
就可以啦~~~
if (e.Row.RowType == DataControlRowType.DataRow)
{
添加删除按钮;
}
就可以啦~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询