一个static引起的问题

问题描述

先贴代码: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是多少?然后打下你的数据看有多少条?

时间: 2024-07-28 14:07:20

一个static引起的问题的相关文章

c++-如果一个类中声明了一个static的vector

问题描述 如果一个类中声明了一个static的vector 例如初始化为0 1 2 3 4--在.cpp文件中怎么去赋初始值啊,还有map之类的,为什么我用好多种方法有有问题 解决方案 什么意思,没看懂你想表达的意思啊 解决方案二: 在cpp的最外面初始化static变量 解决方案三: 可以在cpp里定义一个常量数组,在对象初始化的时候(一般是构造函数),遍历常量数组并把数字一个个push_back进vector.

web项目中一个static的问题

问题描述 我有一个action得到参数要去数据库查找,我用的是hibernate.action:(调用了自己写的HibernateUtil的findUser方法)List<User>list=HibernateUtil.findUser(strUserName,strPwd);HibernateUtilstaticprivateSessionsession;staticGetHibernatehib=newGetHibernate();publicstaticList<User>f

如何设计父类使得每个子类都继承并重写父类的一个static方法?

问题描述 RT.java能办到吗?或者有没有其他办法? 解决方案 解决方案二:父类中的static方法是不可以重写的解决方案三:引用1楼jqctop1的回复: 父类中的static方法是不可以重写的 是的,我觉得单靠语法层面是不能处理这个问题的.解决方案四:publicabstractclassTest{publicstaticvoidf(){thrownewRuntimeException("Youmustoverridethisstaticmethod.");}publicstat

PHP static的一个小技巧_常用工具

某些单值得情况下调用一个方法我们经常这样写 $a = A:: getInstance(); $a->setCount(10); $a->showCount(); 我们可以将setCount变成一个static 方法 把A:: getInstance() 放进这个方法里 我们就可以这样来写 A::setCount(10); 三行的代码变成一行了, 类的实现如下: 复制代码 代码如下: <? class A { private $_count = ""; static p

Java基础:如何使用Static的变量和方法

有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象.通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例.在成员的声明前面加上关键字static(静态的)就能创建这样的成员.如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象.你可以将方法和变量都声明为static.static 成员的最常见的例子是main( ) .因为在程序开始执行时必须调用main() ,所以它被声明为static

在Java类中灵活使用Static关键字

用专业术语来说,只有利用了new关键字创建对象后,才会在系统中为其创建存储空间.不过在有些特殊的情况下,程序员可能希望在没有创建对象的时候就能够为某个特定的成员分配存储空间或者可以调用某个方法等等.在Java中能否实现这个需求呢? 一.不建立对象即想使用的两种实际情况. 笔者提到的这个问题是否是无中生有呢?其实不然.在实际应用程序开发中,就经常会遇到这种情况.如现在需要三个对象,分别用来计算圆的面积.圆球的体积.圆柱的体积.在这三个对象的方法中,都需要用到一个叫做圆周率的常量,而且这个圆周率是固

C# FAQ: const和static readonly有什么区别?

ado|区别 我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等.在多数情况下可以混用.二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值.而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值.明白了这个本质区别,我们就不难看出下面的语句中static readonly和const能否互换了:1. static readonly MyClass myins =

static变量作用域

变量   static变量与asp.net 在C#中,static变量表示该变量属于类,而不是类的实例.可以说是该类的所有实例共享一个static变量.asp.net的页面就是一个类,我们访问一个页面.就会在服务器上实例化一个该类的实例,来响应我们的请求. "所有实例共享一个static变量" 这就意味着,所有的客户端访问到的asp.net页面中static变量都是同一个变量. 由于我们每次访问asp.net页面都是一个全新的对象,而不是我们上一次访问的对象.所以上次页面访问时我们对页

C# 2.0 之 static class[2]

看看什么是 static class 吧,很久以前我就为不能声明一个 abstract sealed class 而苦恼不已,我在 CSDN 上曾经提出过这个问题,可是并没有获得共鸣.我得到的回复是这样的: abstract 和 sealed一起用?定义abstract的目的就是抽象基类,seal表示不能继承的实体类,完全是两回事,怎么可能一起用呢?abstract表明必须要被继承,sealed表明不可以被继承,这两个是矛盾的,怎么可以一起用呢. 通过查看 IL 代码,我们会发现 static