首先感谢小不点儿同学提供的思路。
问题背景:把manage.aspx中的gridview列出的所有ID值传入下一个页面(放入arraylist,并通过session传递arraylist)。
点击ID=1的条目进入下一个页面Edit.aspx,点击该页的“下一条”时没有反应。程序在这里设断点。
CODE:
///获取数据库连接字符串。。。
int myID=Convert.ToInt16(request.querystring["ID"]);
...
ArrayList myArr=new ArrayList();
myArr=(ArrayList)Session["arr"];
int index=myArr.IndexOf(myID);
-----------------------------------------------------------
程序运行到这里,myID有值为1,myArr有值为1,2,3...但是IndexOf返回的值一直是-1。
出现问题的原因:
进入IndexOf的元数据定义,IndexOf(object value)。再进入object的元数据定义,可以看到其中int型数据是
public virtual int GetHashCode()
返回int的哈希代码。但是在我的数据库中,ID值是bigint类型的,即int64。int64和int的哈希类型是不同的,因此在IndexOf时,arraylist无法找到其中的int类型ID。
解决方法:将myID的类型定义为Int64即可。
浙公网安备 33010602011771号