7

テーブルソーターを使用して、ページの1つでグリッドを並べ替えています。更新された株式情報について10秒ごとにAJAX呼び出しを行い、それに応じてグリッドを更新しています。それだけは機能していますが、並べ替えオプションを適切にキャッシュできません。むしろ、並べ替えをキャッシュしたようですが、キャッシュすると、tablesorterは以前の行もキャッシュし、新しい並べ替えられた行のセットと一緒に表示します。

たとえば、最初のグリッドには10行のデータがあります。2列目で並べ替えます。10秒後、新しい10行のセットが入りますが、空にしても最初の10行は表示されます。いろいろ調べてみましたが、答えが見つからないようです。

まったく並べ替えず、「sorton」のトリガーを呼び出さないと、必要に応じて10行が取得されますが、もちろん行は並べ替えられません。そのトリガーを「sorton」に対して呼び出すと、データはソートされますが、関数が呼び出されるたびに10個の新しい行が取得されます(合計20行、次に合計30行など)。

これが私のAJAX呼び出しの中からの私のコードです:

if (myResult.Data.length > 0) {
    $.each(myResult.Data, function() {
        myRows += "<tr><td>" + this.column1 + "</td><td>" + this.column2 + "</td></tr>";
    });
    $("#myTBody").empty();
    //    $("#myTBody").append(myRows);    //tried this first
    //    $("#myTable").trigger("update"); // combined with this
    $("#myTBody").append(myRrows).trigger("update");
    var sorting = $("#myTable")[0].config.sortList;
    $("#myTable").trigger("sorton", [sorting]);
}
4

4 に答える 4

9

この投稿は古いものですが、元のテーブルソーターの修正を探している私のような人がいる場合に備えてsorton、次の「遅延」方法でトリガーすることで問題を修正します。

$("#myTBody").append(myRrows).trigger("update");
var sorting = $("#myTable")[0].config.sortList;
setTimeout(function () {
    $("#myTable").trigger("sorton", [sorting]);
}, 100);

これを行う理由はupdate、元のテーブルソーターの関数がキャッシュをすぐに更新しないためです。updateメソッドが呼び出されてから1ms後に更新されます。そのsortonため、更新されたキャッシュをすぐに取得することはできません。これは、元のJSコードを読んだ後で結論付けたものです。間違っている場合は、訂正してください。

デモ: http: //jsfiddle.net/eY8uH/692/

于 2014-01-01T03:06:10.667 に答える
3

うーん、それは元のテーブルソーター(デモ)の問題のようです。

申し訳ありませんが、更新中にキャッシュがクリアされない理由を覚えていません。しかし、この問題は私のテーブルソーターのフォークデモ)では発生しません。

于 2012-09-20T02:49:45.203 に答える
0

タイムアウトを使用しないソリューション:

$("#myTBody")
  .append(myRrows);
$("#myTable")
  .trigger("update")
  .trigger("sorton", [$("#myTable")[0].config.sortList])
  .trigger("appendCache");

に基づく:https ://stackoverflow.com/a/2013571/451962

于 2014-11-04T10:35:44.190 に答える
0

古い投稿ですが、最近この問題が発生しました。私にとってはこれでうまくいきました

$("#myTable")[0].config.cache = null;
$("#myTable").trigger("sorton");

キャッシュを保持するだけで、回避するための適切なフラグを見つけることができなかったため、nullに設定しました

于 2021-04-24T02:51:06.007 に答える