私が読んだすべてから、ListView コントロールにページングを追加するのは非常に簡単であるように見えましたが、それは私にとってはうまくいきません。ListView コントロールと DataPager コントロールをフォームに追加してそれらを接続した後、非常に奇妙な動作が発生します。DataPager は ListView のページ サイズを正しく制限しますが、ページング ボタンをクリックしても ListView にはまったく影響しません。ページングボタンは、最後のページに移動すると最後のボタンが無効になるなど、仕事をしていると思っているようですが、ListViewは決して変更されません。また、DataPager で何かを実行するには 2 回クリックする必要があります。つまり、[Last] を 1 回クリックしても何も起こりませんが、2 回目にクリックすると、DataPager は最後のページが選択されたかのように反応します。
私が考えることができる唯一のことは、LinqDataSource コントロールなどを使用せずに、実行時に DataSource を (LINQ オブジェクトに) バインドしていることです。誰もこの行動を見たことがありますか?私は何か間違ったことをしていますか?私が使用しているコードは次のとおりです。
<asp:DataPager ID="HistoryDataPager" runat="server" PagedControlID="HistoryListView" PageSize="10">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="true" ShowLastPageButton="true" />
</Fields>
</asp:DataPager>
<asp:ListView ID="HistoryListView" runat="server">
...
</asp:ListView>
コード ビハインドで:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
HistoryListView.DataSource = From x in myContext.myTables ...
DataBind()
End If
End Sub