質問

さて、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(); });
    }
}

これはうまくいきました。グリッドビューをロードすると、並べ替えが機能します。

  • 投稿を返すボタンをクリックすると、正常に動作します。
  • クリックします また 最初のクリックはソートに機能し、ソートされますが、スタックします。列を変更することはできますが、決してソートされません。しかしその後...
  • もう一度クリックすると正常に動作します

これが続き、クリックごとに動作します...何か案は?

役に立ちましたか?

解決

あなたの問題は、サーバー側の問題のように聞こえる - テーブルが同じ要求にバインドされた後にソートのみ動作します。そうでない場合は、ソートのためのイベントフックアップは、何かを見つけることができません。

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

問題のこの種のは恐ろしい。ネットページイベントモデルに共通の問題である。

最も簡単な修正があなたのテーブルには、ビューステートがロードされた後、AJAXポストバックにリバウンドが、イベントが発生した後にイベントが発生する前に、再度データを取得していることを確認することです。問題は、あなたが二回あなたのデータを持っていることです。

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

ネットページイベントモデルの問題点のこれらのタイプは、MVCでそんなに興味があります理由の一部です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top