之前碰到需要分页的地方,总是很蛋疼,老是要自己写一大堆的分页代码。于是就自己写了个自定义控件,继承自Repeater,IPageableItemContainer,来实现分页。此分页控件是取出所有数据的伪分页,未从Sql入手(懒)。
之后就一直用这个分页控件来分页。代码工作量节省了很多,也就这样傻乎乎的用了好几个月。
BUT,今天问题来了。之前的分页都是小打小闹,要嘛就是几百行的数据,要嘛就是几千行的数据,从没超过万过。今天的数据就要命的超过了万行。页面在显示第一页的时候没有问题,erveryting is ok!但一旦单击第二页的链接,浏览器就显示“无法显示网页”的提示。怀疑是程序问题,设断点,调试。可恶的是一旦点击第二页页面断点就截获不到(果然二)。也就是说请求并没有实现指定页面的访问。。。纳闷ING。。。从HttpModule入手吧,新建HttpModule,可以跑到。
思考良久,认定是第一页所生成的页面造成请求第二页的时候出问题。鼠标右键,查看源文件,哇靠,页面有4M大,再一看,一大堆的ViewState。
锁定问题,禁用分页控件的ViewState(不是整个页面的ViewState)。问题搞定。
原因是应该是HttpModule之后在解析ViewState的时候发现ViewState太大,解析挂了。
SO,ViewState啊ViewState,小心为妙!