GridviewのPageIndexChangingイベントが発生しないバグ
現象
Gridviewのオプションで上下にページングリンク入れて、
最終ページから他のページのリンクをクリックするとPageIndexChangingイベントが発生しない。
対処
c# - ASP.NET 4.5 GridView: PostBack of last page - Stack Overflow
このリンク先ではGridviewを拡張して対応してるけど、
そもそもGridviewにページングがくっついてること自体よくないから、
AspNetPagerというページングコントロールを使うことにした。
AspNetPager - Home
こんなに要らないってくらいオプションが豊富。(上記リンクのデモ参照)
indexが1から始まることを除けばすごくいい。
CloneFromで簡単に複製もできるから実装はひとつ分だけでよく、修正(差替)は簡単だった。
PagingButtonLayoutTypeでulタグでの生成に変更できるからBootstrapがそのまま使える。
サンプル
<webdiyer:AspNetPager ID="pagerTop" runat="server" CssClass="pagination" PageSize="20"></webdiyer:AspNetPager> <webdiyer:AspNetPager ID="pagerBottom" runat="server" CloneFrom="pagerTop"></webdiyer:AspNetPager>
pager.PagingButtonLayoutType = PagingButtonLayoutType.UnorderedList pager.CurrentPageButtonPosition = PagingButtonPosition.Center pager.CurrentPageButtonClass = "selected" pager.NextPageText = "Next" pager.PrevPageText = "Prev" pager.AlwaysShow = True pager.ShowMoreButtons = False pager.ShowCustomInfoSection = ShowCustomInfoSection.Never pager.ShowPageIndexBox = ShowPageIndexBox.Never pager.PagingButtonSpacing = 0