3

TabContainer(Ajax Control Toolkit からの) コントロールを含むページがあり、現在選択されているタブに応じて、ページ上のいくつかの要素の表示を切り替えます。私はこれをOnClientActiveTabChanged(正常に動作する) のイベント ハンドラーで実行していましたが、ポストバック後にページが間違った状態のままになることがわかりました。インデックスを取得するためにイベント ハンドラーにコードを追加しようとしましたdocument.readyが、次のようにすると:

$(document).ready(function () {
    var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
    // Do some stuff with the index
});

....controlプロパティで null 参照例外が発生します。のクライアント側の「準備完了」イベントをフックする方法はありTabContainerますか?

私は通常の DOM 要素のイベント ライフサイクルに詳しくありません (一般的な onload イベントがあるはずですが、見当たりません)。簡単に処理できるイベントがない場合はUpdatePanel、アクティブなタブ インデックスを取得する onclick イベント ハンドラーを使用して、UpdateMode=Conditional と非表示のボタンを指す AsyncPostBackTrigger を追加するとうまくいくように見えましたが、 DOMがすでに公開していると私が期待する何かのための多くの動く部分のようです.

4

2 に答える 2

2

遅すぎて役に立ちませんが、同じ問題があり、回避策を見つけました。コードを変更する

$(document).ready(function () {
    var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
    // Do some stuff with the index
});

function pageLoad() {
    var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
    // Do some stuff with the index
};

ここでの説明: http://encosia.com/document-ready-and-pageload-are-not-the-same/

基本的に、jQuery の Ready イベントは「少し早い」ため、TabContainer はまだ初期化されていませんが、クライアント側の ASP.Net の pageLoad は十分に遅く、TabContainer はそれまでに初期化されています。

于 2014-02-14T18:31:39.307 に答える
0

この投稿を確認して、ポストバック中にタブの選択を保存してください。アクティブなタブのインデックスを隠し変数に保存することで、通常のポストバックで機能します。投稿されたリンクの JQuery プラグイン用に書かれていますが、概念は同じである必要があります。つまり、選択したタブのインデックスを永続化します。

于 2012-10-12T19:51:43.383 に答える