アプリでページングを表示するために TwbsPagination プラグインを使用しています。初期化中にページサイズを設定するとうまくいきます。しかし、検索結果に基づいて、総ページ数をリセットしたいと考えています。
使ってみると
$('#pagination').twbsPagination({totalPages:10});
表示される合計ページ数はリセットされません。
アプリでページングを表示するために TwbsPagination プラグインを使用しています。初期化中にページサイズを設定するとうまくいきます。しかし、検索結果に基づいて、総ページ数をリセットしたいと考えています。
使ってみると
$('#pagination').twbsPagination({totalPages:10});
表示される合計ページ数はリセットされません。
スクリプト コードを分析した後、このスクリプトが.data()メソッドを使用してページネーションのビュー ステートを保存し、それを明示的に行うことができたことがわかりました。
.data(): 一致した要素に関連付けられた任意のデータを格納するか、一致した要素のセットの最初の要素の名前付きデータ ストアで値を返します。参照: http://api.jquery.com/data/
ページネーションをリセットするソリューション。
「リストレンダリング」または「データバインディング」関数/メソッドの前に呼び出す必要があります
$('#pagination').empty();
$('#pagination').removeData("twbs-pagination");
$('#pagination').unbind("ページ");
これにより、ページネーションのビュー ステート データがリセットされます。( 「twbs-pagination」はビュー ステート キーです)。
ああ、私は別の方法でこの仕事を得ることができました。これを JQGrid と組み合わせて使用しているため、loadComplete イベントを選択してコードにパッチを適用しました。手順は次のとおりです。
1. ページング ボタンを保持する DIV を作成します (twbs コントロールの)
<div id="paginationholder"></div>
2.現在のページを保持するローカル js 変数を作成しました
var currentPage=1;
3.JQgridのAJAX前にページ番号を更新
beforeRequest: function () {
var postData = grid.jqGrid('getGridParam', "postData");
postData.page = currentPage;
postData.rows = $("#rows").val();
}
4.loadComplete でページネーション コントロールを再構築します。ユーザーがページをクリックすると、ページ番号 ( currentPage
) が更新され、グリッドがリロードされます。
loadComplete: function (data) {
$('#paginationholder').html('');
$('#paginationholder').html('<ul id="pagination" class="pagination-sm"></ul>');
$('#pagination').twbsPagination({
startPage: data.page,
totalPages: data.total,
visiblePages: 5,
onPageClick: function (event, page) {
currentPage = page;
grid.trigger('reloadGrid');
}
});
}