0

我在让我的 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="" />

任何想法都会受到欢迎。

4

1 回答 1

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

即使关闭视图状态,这些字段仍用于这些事件。

希望这可以帮助某人。我已经为此苦苦挣扎了一段时间!

于 2014-04-04T10:19:32.337 回答