1

UpdatePanelの応答がクライアントによって受信され、ページにレンダリングされると、正確には何が起こるでしょうか?

この質問の動機は、この質問この jQueryUI ticketで提起された問題の適切な解決策を見つけることです。基本的に、jQueryUI の日付ピッカーが にアタッチされていて、その更新時に開いているとTextBox、奇妙なことが起こります。UpdatePanelUpdatePanel

この質問そのリンクされた記事は、それがこれ以上のものではないことを示唆しています:

document.getElementById('updatePanelContainer').innerHTML = responseHtml;

しかし、私はこのjsfiddleでそれを試しましたが、日付ピッカーはDoneボタンを除いて完全に機能しなくなりました。部分的なポストバックで私が見ている動作は、日付ピッカーがまだ機能していることですが、その状態はその下から取り出されています。jQueryUI の縮小されていないコードを使用してデバッグすると、プロパティdrawYeardrawMonthプロパティの値が失われる (0 になる) ことがわかります。

Firebug をいじって、部分的なポストバックが発生するのを観察していると、ページに次のような変更があることに気付きました。

  • Firebug の [DOM] タブにある入力のプロパティの一部は、次のようになくなります。
    • アクセスキーラベル
    • 親要素
    • クライアントの高さ
    • クライアント左
    • クライアントトップ
    • クライアント幅
    • 次の兄弟
    • オフセット高さ
    • オフセット左
    • オフセット親
    • 上オフセット
    • オフセット幅
    • 親ノード
    • 前の要素兄弟
    • 前兄弟
    • スクロールの高さ
    • スクロール幅
  • ページの下部に、ASP.NET 情報を含む非表示フィールドを含む一連の非表示span要素が追加されます (__VIEWSTATE に似ているようです)。
  • 要素の内容がupdate少しずつ変化する (スペースとタブなど)

更新:再現を機能させることができました。鍵となるのは、バインド先の入力を再作成した後に日付ピッカーを再初期化することです。上記の jsfiddleの最新リビジョンを参照してください。ただし、部分的なポストバックが行う特別なことがあれば知りたいです。

4

1 に答える 1

2

部分的なポストバックは、UpdatePanel 内の div に適切な HTML を送り返すだけで、その HTML は応答に置き換えられます。完全なポストバック ライフサイクルは引き続きサーバー上で発生するため、UpdatePanel の外部でコントロールを更新する場合は注意が必要です。これらの変更はクライアントに反映されず、意図しない副作用が生じる可能性があるためです。

于 2012-07-10T16:31:23.647 に答える