最近做网站遇到了一个奇怪的问题,在进行datagrid进行分页时,无法响应 pageindexchanged 事件 。
我也查阅了很多关于这方面的文章,可是还是没有得到解决方案。 在和别人的探讨中发现了症结所在
首先,我先将代码贴过来:
下面是datagird控件的html代码(不包含字段绑定)
<asp:datagrid id=”searchgrid” runat=”server” width=”100%” autogeneratecolumns=”false” enableviewstate=”true” allowpaging=”true” pagesize=”3″ pagerstyle-mode=”numericpages” pagerstyle-horizontalalign=”right” pagerstyle-pagebuttoncount=”5″ onpageindexchanged=”searchgrid_pageichanged” >
下面是后代码:
private sub page_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
if not ispostback then
bindgrid()
end if
end sub
public sub searchgrid_pageichanged(byval s as object, byval e as datagridpagechangedeventargs)
searchgrid.currentpageindex = e.newpageindex
bindgrid()
end sub
public sub bindgrid()
searchgrid.datasource = (绑定你的数据源)
searchgrid.databind()
end sub
对与上面的代码,第一次加载页面都可以得到正确的显示结果和页数,但是切换页面时不能响应分页事件
经过跟踪程序发现切换页面每次都要调用pageload , 我把databind移出is notpostback后,分页可以正常
说明每次在回送页面时都要重新给datagrid加载数据,随即考虑到datagrid设置了enableviewstate为false
datagrid数据没有保留下来,导致datagrid只有在每次加载都重新绑定才能实现保持状态而正常分页。
因此将enableviewstate设置为true ,问题解决。