5

私は現在、AJAXUpdatePanel内にあるGridViewに「colResizable」を使用しようとしています。最初のロードでは正常に機能しますが、UpdatePanelが更新されるたびに停止します。

これは、パネルの完全な更新が原因であると理解しています。つまり、初期化によって追加されたものがすべて追加されていないことを意味します。

「add_endRequest」ソリューションを試しました

var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_endRequest(function() { 
    $(".GridViewStyle").colResizable({ liveDrag: true }); 
}

しかし、それはあまりにも早く呼び出され、私の問題を修正しません。

「.live()」メソッドについて読みましたが、初期化にどのように使用できるかわかりません。「マウスオーバー」のようなイベントの場合、それがどのように使用されているかがわかり、非常に単純です...しかし、初期化の場合、私はそれを取得しません。

私の現在の初期化ラインは:

$(document).ready(function () {
    $(".GridViewStyle").colResizable({ liveDrag: true });
});

「マウスオーバー」の例に従いますが、ドキュメントに「ロード」のようなものがリストされていないため、どのイベントに接続するかがわかりません。もしそうなら、私はこのようなものを使用したでしょう...

$(".GridViewStyle").live("load", function () { $(".GridViewStyle").colResizable({ liveDrag: true }); });

探し回ったのですが、自分のニーズに合ったものが見つかりませんでした。私はjQueryにかなり慣れていないので、正しい語彙/概念を使用していない可能性があります。

4

2 に答える 2

0

.live()は非推奨になっているため、代わりにjQueryの.on()メソッドを使用してみてください。

$(document).on("change", $('.GridViewStyle'), function() {
    $(this).colResizable({ liveDrag: true });
});

また、postbackSafe: trueポストバック中に列幅の変更を保持するように初期化子を設定することもできます。

于 2012-11-07T04:05:50.167 に答える
0

の代わりにのpageLoadedイベントを使用できます。このイベントのドキュメントをご覧ください。PageRequestManagerendRequest

同期または非同期のポストバックの結果として、ページ上のすべてのコンテンツが更新された後に発生します。

また、このイベントハンドラーでは、GridViewコントロールが配置されているUpdatePanelが作成または更新された場合にのみ、colResizableプラグインを適用できます。これにより、他のUpdatePanelの制御によって発生する可能性のある各非同期ポストバックでの冗長なプラグイン初期化呼び出しを回避できます。

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(initializeResizeable);

function initializeResizeable(sender, args) {
    var context = $(args.get_panelsCreated()).add(args.get_panelsUpdated());
    $(".GridViewStyle", context).colResizable({ liveDrag: true }); 
}

また、このスクリプトを使用すると、このスクリプトが最初のページの読み込み時と各非同期ポストバックで実行されるため、document.readyハンドラーからプラグインの初期化を削除できます。

于 2012-11-07T05:45:20.857 に答える