前提・実現したいこと
アコーディオンの中に配置したコントロールからのポストバックで
UpdatePanelの更新をしたい。
発生している問題・エラーメッセージ
アコーディオンの中に配置されているコントロールを
アコーディオンの外にあるUpdatePanelのトリガーに設定しようとすると見つからないと言われます。
InvalidOperationException: UpdatePanel 'updatePanel1' のトリガー用の ID 'button1' のコントロールが見つかりませんでした。
該当のソースコード
aspx
1<ajaxToolkit:Accordion ID="accordion1" runat="server" HeaderCssClass="accordionHeader" ContentCssClass="accordionContent" RequireOpenedPane="false" FadeTransitions="False" FramesPerSecond="30" TransitionDuration="300" AutoSize="Limit" Width="500px" Height="500px"> 2 <Panes> 3 <ajaxToolkit:AccordionPane runat="server"> 4 <Header>ヘッダー</Header> 5 <Content> 6 <asp:Button ID="button1" Text="ボタン1" runat="server" /> 7 <asp:Button ID="button2" Text="ボタン2" runat="server" /> 8 </Content> 9 </ajaxToolkit:AccordionPane> 10 </Panes> 11</ajaxToolkit:Accordion> 12<asp:UpdatePanel ID="updatePanel1" runat="server"> 13 <ContentTemplate> 14 <asp:Label ID="label1" runat="server"></asp:Label> 15 </ContentTemplate> 16 <Triggers> 17 <asp:AsyncPostBackTrigger ControlID="button1" /> 18 </Triggers> 19</asp:UpdatePanel>
試したこと
トリガーを以下のように変更したところ、正常に実行できました。
aspx
1<asp:AsyncPostBackTrigger ControlID="ctl04$button1" />
ただし、これはたまたまbutton1のidがctl00_ContentPlaceHolder1_ctl04_button1であったため動きましたが、
ctl04の部分は自動的に採番されているため、何かの拍子に変わってしまうとまたエラーになってしまいます。
正しい対応の仕方をご存知でしたら、ご教示ください。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
Visual Studio 2015
.NET Framework 4.6.2
jQuery 3.1.1
AjaxControlToolkit 16.1.1
回答1件
あなたの回答
tips
プレビュー