2009-08-03 7 views
1

私は、各行にユーザーコントロールを呼び出すリピーターを含む更新パネルを持っています。ユーザーコントロール内のボタンをクリックすると、ページが完全にリロードされたときにのみ、ページがまったく更新されません。ユーザーコントロールのボタンをクリックして更新パネルを更新するにはどうすればよいですか?親コントロールパネルをユーザーコントロール内から更新します

答えて

0

ユーザコントロールのボタンがポストバックを試みていますか?私はしばらくのうちに更新パネルを使用していない(と私は実際にそれらを避けることをお勧めしたい)が、私は正しく彼らがポストバックがそれらの内部で行われるたびに更新されますリコールします。これは、ボタンがAsp:Buttons(またはポストバックを引き起こす同様のコントロール)で、そのアクションが続行されないようなJavaScriptの種類がない(falseを返すなど)必要があることを意味します。

3

Phairohは、correctです。これは、ボタンがPostBackを正常に実行する必要があることを示します。これは、2つの可能な値、AlwaysConditionalを取る -

  1. UpdateModeプロパティは:

    は、UpdatePanelの更新されたときに影響を与える3つのことをあります。

    • Alwaysに設定すると、ページのどのポストバックでもUpdatePanelが更新されます。
    • Conditionalに設定すると、UpdatePanelのUpdateメソッドが呼び出されたとき、またはUpdatePanelのトリガーの1つがポストバックを行うときにのみ、UpdatePanelが更新されます。
  2. Triggers proropertyは - UpdateModeConditionalに設定されているときのUpdatePanelを更新する原因となる制御を定義します。
  3. ChildrenAsTriggersプロパティ - これは、UpdatePanelの子コントロールが自動的にTriggersコレクションに追加されることなくトリガーとみなされるかどうかを決定するブール値です。あなたのボタンは、ユーザーコントロールにあるので

Triggersコレクションにコントロールを追加したり、ボタンをユーザーコントロール内にないのUpdatePanel上のUpdateメソッドを呼び出し持つことは容易ではありません。

あなたのUpdatePanelにはUserControlが含まれているので、ChildrenAsTriggersを有効にすることをお勧めします。これで問題が解決しない場合は、UpdateModeプロパティをAlwaysに設定してみてください。これでもまだ動作しない場合は、Phairohはおそらくcorrectで、あなたのボタンはポストバックしていません。

2

この問題を解決するには、トリガーでは便利ではないことがあります。したがって、更新パネルに関する知識がなくても、ユーザーコントロールからでも使用できる別の方法があります:

var scriptManager = ScriptManager.GetCurrent(Page); 
    if (scriptManager != null) 
     scriptManager.RegisterPostBackControl(SomeControlID); 
関連する問題