0

わかりました、GridView で作成されたテーブルがあり、それにテーブルソーターが接続されています。問題なく動作します。

次に、それを updatepanel 内に配置し、ポストバックで再バインドするコードを追加しました。これが私のスクリプトです。

function loadEvents() { $("table[id$='gv']").tablesorter(); }
$(document).ready(function() { loadEvents(); });
function reBind() {
    if (Sys.WebForms.PageRequestManager) {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_endRequest(function() { loadEvents(); });
    }
}

これはうまく機能します。グリッドビューをロードすると、ソートが機能します。

  • 投稿するボタンをクリックすると、正常に動作します。
  • もう一度クリックすると、最初のクリックで並べ替えが行われ、並べ替えが行われますが、行き詰まります - そこに - 列を変更できますが、並べ替えられませんか? しかしその後...
  • もう一度クリックすると、正常に動作します

これは続き、クリックするたびに機能します...何かアイデアはありますか?

4

1 に答える 1

-1

あなたの問題はサーバー側の問題のように聞こえます.同じリクエストでテーブルがバインドされた後にのみソートが機能します。そうしないと、並べ替えのイベント フックアップが何も見つかりません。

もちろん、すでにテーブルをバインドしている場合は、すでにソートされているため、データを再度取得する必要があります。

この種の問題は、恐ろしい .Net ページ イベント モデルに共通の問題です。

最も簡単な修正は、viewstate が読み込まれた後、イベントが発生する前に ajax ポストバックでテーブルが再バインドされていることを確認し、イベントが発生した後にデータを再度取得することです。問題は、データを 2 回取得していることです。

より良い解決策は、動的なページ要素で .Net のイベント フックアップを使用しないことです。

.Net ページ イベント モデルに関するこの種の問題は、MVC に大きな関心が寄せられている理由の 1 つです。

于 2009-02-24T11:53:31.183 に答える