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