我遇到了触发我的PageIndexChanging事件的问题。 Viewstate已关闭,我有一个动态数据源,我在PageInit事件的每个回发上加载。
<asp:GridView runat="server"
ID="gvBenefitsList"
AllowPaging="true"
>
.....
<PagerSettings Mode="NumericFirstLast" FirstPageText="<< First" LastPageText="Last >>"
PageButtonCount="5" Position="Bottom" />
</asp:GridView>
指数变更事件
Protected Sub gvBenefitsList_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvBenefitsList.PageIndexChanging
gvBenefitsList.PageIndex = e.NewPageIndex
gvBenefitsList.DataSource = Data
gvBenefitsList.DataBind()
End Sub
每次关闭视图状态时,我都必须重新绑定网格。
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
Data = getdata()
gvBenefitsList.DataSource = Data
gvBenefitsList.DataBind()
End Sub
哦,Data是DataSet属性
Dim m_Data As DataSet
Public Property Data As DataSet
Get
Return m_Data
End Get
Set(value As DataSet)
m_Data = value
End Set
End Property
因此,当单击第2页时,init事件会触发并绑定网格,但索引更改事件永远不会被触发。我已经厌倦了在init事件中以编程方式附加处理程序
AddHandler gvBenefitsList.PageIndexChanging, AddressOf gvBenefitsList_PageIndexChanging
但这并没有什么区别。我不确定为什么这不起作用,因为rowCommand事件工作正常。这是关闭Viewstate的母版页的一部分,我们将隐藏的Viewstate变量设置为空字符串以减少页面大小。
<input type="hidden" name="__EVENTTARGET" value="" />
欢迎任何想法。
答案 0 :(得分:0)
所以我似乎找到了罪魁祸首。如主页中所述,我们将删除
的值<input type="hidden" name="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" value="" />
这似乎会导致某些javascript回发事件出现问题。我在这里发现了一篇非常好的文章,说明了他们的所作所为。
http://aspalliance.com/895_Understanding_the_JavaScript___doPostBack_Function.all
这两个隐藏字段控制任何执行JavaScript___doPostBack调用的链接按钮,但不会影响正常按钮或图像按钮,因为它们会正确回发到服务器。
检查帖子我可以看到,当点击分页链接时,值为:
__EVENTARGUMENT - Page$2
__EVENTTARGET - ctl00$MasterContent$gvBenefitsList
即使关闭了视图状态,这些字段仍会用于这些事件。
希望这可以帮助别人。我一直在努力奋斗!