16

アプリでページングを表示するために TwbsPagination プラグインを使用しています。初期化中にページサイズを設定するとうまくいきます。しかし、検索結果に基づいて、総ページ数をリセットしたいと考えています。

使ってみると

$('#pagination').twbsPagination({totalPages:10});

表示される合計ページ数はリセットされません。

4

6 に答える 6

18

スクリプト コードを分析した後、このスクリプトが.data()メソッドを使用してページネーションのビュー ステートを保存し、それを明示的に行うことができたことがわかりました。

.data(): 一致した要素に関連付けられた任意のデータを格納するか、一致した要素のセットの最初の要素の名前付きデータ ストアで値を返します。参照: http://api.jquery.com/data/

ページネーションをリセットするソリューション。

「リストレンダリング」または「データバインディング」関数/メソッドの前に呼び出す必要があります

$('#pagination').empty();

$('#pagination').removeData("twbs-pagination");

$('#pagination').unbind("ページ");

これにより、ページネーションのビュー ステート データがリセットされます。( 「twbs-pagination」はビュー ステート キーです)。

于 2014-08-04T10:53:10.697 に答える
3

ああ、私は別の方法でこの仕事を得ることができました。これを 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');
        }
    });
}
于 2014-09-18T08:11:20.377 に答える