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="" />
どんなアイデアでも大歓迎です。