jQuery tablesorter 拡張機能で複数回クリックすると問題が発生しますか?
-
06-09-2019 - |
質問
さて、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でそんなに興味があります理由の一部です。
所属していません StackOverflow