1

. 私はjqueryデータテーブルが初めてで、ページネーションの問題に直面しています。新しいタプルを挿入すると、テーブルに余分なページが作成されます。

例: 1 つのレコードを挿入すると、最初は一番下に 1 ページが表示され、2 つ目のページを挿入すると、別のページが作成されます。どうすればこの問題を克服できますか

<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
    $('#datatables').dataTable({
        "sPaginationType":"full_numbers",
        "aaSorting":[[2, "desc"]],
        "bJQueryUI":true
    });
})
</script>

先生と私は次のようなテーブルを持っています

                            <?php foreach($response->products as $row): ?>


            <tr>
            <td><?=$row->id;?></td>
            <td><?=$row->name;?></td>
            <td><?=$row->amount;?></td>
            <td><?=$row->type;?></td>
            <td><?=$row->description;?></td>
            <td><?=anchor('product/update/'.$row->id.'/','Edit');?></td>
            <td><?=anchor('product/delete/'.$row->id.'/','Delete');?></td>
            </tr>
                            <?php endforeach; ?>

したがって、forループが発生するたびに余分なページを取得しています...したがって、1ページに表示されているにもかかわらず、10レコードに対して10ページを取得しています

4

2 に答える 2

0

jQuery Datatables を使用して同じ問題に直面していました。JavaScript を使用して行を挿入していましたが、再描画するとページネーションがリセットされました。これに対して私が見つけた解決策は、 fnStandingRedrawという名前の新しい関数でした。この関数を使用できるように上記のコードを追加しましたが、

$.fn.dataTableExt.oApi.fnStandingRedraw = function (oSettings) {
    if (oSettings.oFeatures.bServerSide === false) {
        var before = oSettings._iDisplayStart;

        oSettings.oApi._fnReDraw(oSettings);

        // iDisplayStart has been reset to zero - so lets change it back
        oSettings._iDisplayStart = before;
        oSettings.oApi._fnCalculateEnd(oSettings);
    }

    // draw the 'current' page
    oSettings.oApi._fnDraw(oSettings);
};

その後、次のコマンドを実行します。

theTable.fnAddData([reply], false);
theTable.fnStandingRedraw();

ここで、
theTable : はデータテーブル変数です (var theTable = $('#example').dataTable();)。
返信:私のデータテーブルの行に追加する情報です。http://datatables.net/api#fnAddDataの詳細。

最初のコマンドは、再描画せずにテーブルに行を追加します。この後、新しい行はテーブルに表示されません。
2 番目のコマンドはテーブルを再描画するため、新しい raw が表示されますが、現在のページ設定は保持されます。
これは私にとってはうまくいきました。

于 2013-09-23T20:52:09.820 に答える