问题描述
先贴代码:publicpartialclassBackGround_CheckInfo:System.Web.UI.Page{Operationoperation=newOperation();//业务层对象staticstringinfoType="";//信息类型staticintcheckType=-1;//3这种类别:-1显示全部,0显示未审核信息,1显示审核信息protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){infoType=Request.QueryString["id"].ToString();}GridViewBind(infoType);}privatevoidGridViewBind(stringtype){GridView1.DataSource=operation.SelectInfo(type);GridView1.DataKeyNames=newstring[]{"ID"};GridView1.DataBind();lbPageSum.Text="当前页"+(GridView1.PageIndex+1)+"/"+GridView1.PageCount+"页";}//......(不重要部分省略)protectedvoidGridView1_SelectedIndexChanging(objectsender,GridViewSelectEventArgse){stringid=GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();operation.UpdateInfo(id,infoType);switch(checkType){case-1:GridViewBind(infoType);GridView1.DataBind();break;case1:GridViewBind(infoType,true);GridView1.DataBind();break;case0:GridViewBind(infoType,false);GridView1.DataBind();break;}}前台代码<asp:GridViewID="GridView1"runat="server"AllowPaging="True"AutoGenerateColumns="False"CellPadding="4"ForeColor="#333333"GridLines="None"Height="65px"PageSize="24"Width="815px"onprerender="Page_Load"onrowdatabound="GridView1_RowDataBound"onselectedindexchanging="GridView1_SelectedIndexChanging"DataKeyNames="ID"><RowStyleBackColor="#E3EAEB"/><Columns><asp:BoundFieldHeaderText="信息类型"DataField="type"/><asp:BoundFieldHeaderText="信息标题"DataField="title"/><asp:BoundFieldHeaderText="信息内容"DataField="info"/><asp:BoundFieldHeaderText="联系人"DataField="linkman"/><asp:BoundFieldHeaderText="联系电话"DataField="tel"/><asp:BoundFieldHeaderText="审核状态"DataField="checkState"/><asp:CommandFieldSelectText="通过/取消"ShowSelectButton="True"/><asp:CommandFieldDeleteText="详细信息"ShowDeleteButton="True"/><asp:BoundFieldDataField="ID"HeaderText="ID"/></Columns><FooterStyleBackColor="#1C5E55"Font-Bold="True"ForeColor="White"/><PagerStyleBackColor="#666666"ForeColor="White"HorizontalAlign="Center"/><SelectedRowStyleBackColor="#C5BBAF"Font-Bold="True"ForeColor="#333333"/><HeaderStyleBackColor="#1C5E55"Font-Bold="True"ForeColor="White"/><EditRowStyleBackColor="#7C6F57"/><AlternatingRowStyleBackColor="White"/></asp:GridView>纠结的问题是,后台代码中的staticstringinfoType这句,如果把infoType设为静变量程序顺利执行,但不加static时就会报错:索引超出范围。必须为非负值并小于集合大小。参数名:index说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.ArgumentOutOfRangeException:索引超出范围。必须为非负值并小于集合大小。参数名:index源错误:行86:protectedvoidGridView1_SelectedIndexChanging(objectsender,GridViewSelectEventArgse)行87:{行88:stringid=GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();行89:operation.UpdateInfo(id,infoType);行90:switch(checkType)源文件:f:SISBackGroundCheckInfo.aspx.cs行:88这个是为什么啊,求大牛.....
解决方案
解决方案二:
幫頂的,代碼好看不看了!+++
解决方案三:
打下日志,看e.NewSelectedIndex是多少?然后打下你的数据看有多少条?