LinqDataSourceとページ付けが有効になっている(DataPagerを使用して)標準のASP.NET ListViewを使用する場合、結果の最後のページをデフォルトで表示するための最良の方法は何でしょうか。
3 に答える
現在のページインデックスをページ数-1に設定します。
私はこれを行ったことはありませんが、データ ソースの OnSelecting ハンドラー、ListView の OnPreRender または OnDataBinding、DataPager の OnPreRender など、必要な変更を加えることができるかどうかを確認する場所がいくつかあります。基本的に!IsPostBack
、特別な方法で のケースを処理する必要があります。おそらく最初に DataPager を見て、ページ数を調べて最後のページに設定できるかどうかを確認します。ページを目的のページに設定した後、データ ソースの再バインドが必要になる場合があります。その後、ListView に OnDataBinding ハンドラーを追加して、そこで何ができるかを見ていきます。私は、PreRender の発生が遅すぎて ListView が効果を発揮できないのではないかと考えています。OnSelecting は、テーブルベースの関数を介したフィルタリングには適していますが、この場合はおそらくあまり効果がありません。
合計レコード数とページに表示されるレコード数を知る必要があります。
この役立つ投稿は、レコード数を取得する方法を示しています。
private LinqDataSourceSelectEventArgs args;
protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
args = e;
e.Result = new Database().Table.Whatever...
}
protected void LinqDataSource1_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
this.label1.Text = args.Arguments.TotalRowCount + " records";
}
あなたに似た状況についてのさらなる議論があります。