2011-06-20 18 views
1

大規模で複雑なASP.NETプロジェクトを作成しています。JavaScriptによってトリガされたUpdatePanelが正しく更新されない

正しく更新されないUpdatePanelを持つ動的に読み込まれたWebユーザーコントロールがあります。 UpdatePanelは、JavaScript関数からトリガーされています。

私は、問題を示す非常に単純化されたプロジェクトを作成し、http://www.softcircuits.com/Client/TestProject.zipに投稿しました。

これらのテクノロジを深く理解している人が見て正しい方向に向けると非常に感謝します。

+0

私は、HiddenFieldがまだOnControlでOnLoadの間にRequest.Formで満たされていない(OnInitの間に追加された)同様の問題を抱えています。もちろん、私は完全なポストバックをしています。部分的ではありません。 PreRenderがHiddenFieldの動作を待つまで待ちますが、満足できません。 –

答えて

1

私は何が起こっているかを知ったと思います。私は、UpdatePanelポストバックは通常のポストバックのようなものだが、ページの一部だけがクライアントに返されることを知っている。だから私はちょっと遊んで、HalfTrackMindManが期待どおりに動作すると言いました。それから、私はUpdatePanelsのよくある間違いについてgoogleに尋ねて、何がうまくいかないのかを説明したthis articleを見つけました。

これは実際に起こります。

  1. は、両方のテキストボックスの値は、Loadイベントが起動し、テキストボックス
  2. のテキストを変更しているサーバーで
  3. 空白になっているポストパラメータにサーバー
  4. にページの値を投稿__doPostBack
  5. のEventHandler(これらは両方とも
  6. ブランクにリセットされ実行され、転記値が2つのテキストボックスに設定されている...
  7. 更新パネルはブランク値
  8. でレンダリングされ

テキストボックスの1つにテストを入れてボタンを押すと、 "testing"という値がサーバーに戻ってくるのがわかります。

1|#||4|356|updatePanel|MainContent_WebUserControl11_ctl00_UpdatePanel1| 
     <p> 
      Message:<br /> 
      <input name="ctl00$MainContent$WebUserControl11$ctl00$TextBox1" type="text" value="testing" id="MainContent_WebUserControl11_ctl00_TextBox1" /> 
     </p> 

更新パネルの入力要素の値を更新するには、Pre_renderイベントで行う必要があります。一方、on_loadのラベルを更新すると、それが動作します。

希望に役立ちます。

+0

ありがとう@marto。私はあなたがリンクした記事を実際に走っていました。私はもう少し慎重にもう一度それを読むでしょう。私はPre_Renderでこれをやっていますが、いくつかの細部についてはまだぼんやりしています。 –

1

OnLoadの代わりにUpdatePanelのOnPreRenderイベントでテキストボックスの値を設定しようとしました。

+0

はい、それはうまくいくようです、ありがとう。私は前に移動する前に問題を少しは理解してみるつもりですが。動的に読み込まれるコントロールのタイミングに関係しているように見えます。 –

関連する問題