6

私はUpdatePanelに入れるまで正常に動作するように見えるカスタムサーバーコントロールを持っています。 UpdatePanelの内部では正常に動作し続けますが、カスタムサーバーコントロールがポストバックを実行するとUpdatePanelは完全なポストバックを行います。カスタムサーバーコントロールは、UpdatePanel内の完全なポストバックを引き起こします。

カスタムサーバーコントロールがUpdatePanel内で非同期ポストバックを行うには何かする必要がありますか?

完全なポストバックを引き起こしている関連コードを次に示します。 ecs:Pagerコントロールは、UpdatePanelにあってもOnCommandイベントの完全なポストバックを引き起こす私のカスタムコントロールです。

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server"> 
    <ContentTemplate> 
     <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
     <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
     </asp:Repeater> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

私はこれに対する答えにも興味があります。 UpdatePanel内で部分的なポストバックを行わないIPostBackDataHandlerを実装するカスタムコントロールがあります。 UseChildrenAsTriggersプロパティを使用すると、コントロールがトリガとして登録される秘密のソースが存在する必要があります。 –

+0

customcontrolのイベントで非同期ポストバックを実行するためにupdatepanelに明示的なトリガを追加するとどうなりますか? – AndreasKnudsen

答えて

0

残念...ページの残りの部分は表示されません。

あなたのページにもScriptManagerがありますか?

+0

はい、申し訳ありませんがコードが何らかの理由で途切れてしまっています。今修正されました。 ScriptManagerはマスターページの一部として存在します。 – DarenTx

0

カスタムコントロールはINamingContainerを実装し、その名前付きコンテナ内の別のコントロールからのポストバックですか?

UpdatePanelとソースコントロールの間に名前付けコンテナーの境界があると、この現象が発生する可能性があります。 AndreasKnudsenは別のオプションは、あなたの更新の更新モードを入れて、あなたのUpdatePanelタグに

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server" ChildrenAsTriggers="true"> 
0

1つのオプションはあるかもしれませんパネルを条件付きにする。

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
     <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
     </asp:Repeater> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+1

ChildrenAsTriggersはデフォルトではtrueですので、これを追加することも同じです。 – awe

1

をChildrenAsTriggersを追加しようとすることです

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server"> 
    <ContentTemplate> 
    <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
    <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
    </asp:Repeater> 
    </ContentTemplate> 
    <Triggers> 
    <AsyncPostBackTrigger ControlID="ClosedIssuesPager" EventName="Command" /> 
    </Triggers> 
</asp:UpdatePanel> 

あなたのパネルにAsyncPostBackTriggerを追加するよう提案して

1

カスタムコントロールで使用されているコントロールの種類は指定しません。それらはボタンかドロップダウンか他のものですか?それらがボタンの場合、UseSubmitBehaviorプロパティがFalseに設定されていることを確認する必要があります。

また、あなたがScriptManager.RegisterAsyncPostBackControl

1

を経由して、ページののScriptManagerを使用してコントロールを登録したいとしている私は、同様の問題を抱えていたし、私のユーザーコントロールタグに属性のClientIDMode =「AUTOID」を追加しても問題が解決しことがわかりました。

関連する問題