2011-07-06 6 views
5

他のAccordionコントロールに配置された複数のボタンを持つAccordionコントロールがあるとします。問題は、それらのボタンのイベントがサーバー側で処理されないという事実にあります。例:分離コードネストされたAccordionコントロールからイベントが発生しない

<form runat="server"> 
<ajax:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
</ajax:ToolkitScriptManager> 
<ajax:Accordion ID="Accordion1" runat="server" Enabled="True" Visible="true"> 
    <Panes> 
     <ajax:AccordionPane ID="AccordionPane1" runat="server"> 
      <Header> 
       header1 <asp:button id="ButtonH" runat="server" text="ButtonH" onclick="Button1_OnClick" /> 
      </Header> 
      <Content> 
       <ajax:Accordion ID="Accordion12" runat="server" Enabled="True"> 
        <Panes> 
         <ajax:AccordionPane ID="AccordionPane12" runat="server"> 
          <Header> 
           header2 
           <asp:button id="ButtonH2" runat="server" text="ButtonH2" onclick="Button1_OnClick" /> 
          </Header> 
          <Content> 
           <asp:button id="ButtonContent" runat="server" text="Content" onclick="Button1_OnClick" /> 
           content1</Content> 
         </ajax:AccordionPane> 
        </Panes> 
       </ajax:Accordion> 
      </Content> 
     </ajax:AccordionPane> 
    </Panes> 
</ajax:Accordion> 
</form> 

protected void Button1_OnClick(object sender, EventArgs e) 
{ 
    var button = (Button)sender; 
} 

Button1_OnClick方法がButtonHクリックではなくButtonH2ButtonContentクリックする上でのみ実行され

私は、コードを次のようしています。誰か私が逃したアイデアはありますか?

ありがとうございます!

+0

これはすべてのブラウザで発生しますか?つまり、ブラウザ固有の問題ですか? – Abel

+0

@Abel:これは少なくともIE 9とFF 5.0で起こります。ブラウザ固有のものではないようです。 – Andy

+3

これが関連しているかどうかわかりませんが、自分で確認してください:http://forums.asp.net/t/1405543.aspx/1?ImageButton+onclick+event+is+not+fired+in+AccordionPane –

答えて

5

Tim Schmelterのおかげで、この問題は修正されました。

Here is the forum post he referred toこれは、実行する必要がある変更について説明しています。私が見つけたものの要約:this related ASP.NET post

AccordionCommandEventArgsが定義されている必要がありItemCommandアコーディオンでいう

Accordion.csクラスは、ライン上の

public class Accordion : WebControl, INamingContainer` 

から継承する必要があります68行目のイベントハンドラでは、で参照されているように、行68のイベントハンドラ内で:

public event EventHandler<AccordionCommandEventArgs> ItemCommand; 
//public event CommandEventHandler ItemCommand; 

-1

SuppressHeaderPostbacks="false"を設定してみてください。それは私のために働いた。

関連する問題