0
<ajaxToolkit:Accordion ID="Accordion1" CssClass="accordion" SelectedIndex="0" HeaderCssClass="accordionHeader" HeaderSelectedCssClass="accordionHeaderSelected" AutoSize="None" RequireOpenedPane="false" ContentCssClass="accordionContent" runat="server"> 
<Panes>   
<ajaxToolkit:AccordionPane ID="Pane1" runat="server">
    <Header><b>Panel 1</b></Header>
      <Content>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>          
            <br>
            Age: <asp:textbox id="Age1" runat="server" Width="35" Font-Bold="True"/><br>
            Attorney: <asp:CheckBox ID="Attorney" runat="server" /><br>
            <asp:button ID="Button1" text="Submit" OnClick="Button1_Click"
            runat="server"/><br>
            <asp:label id="Message1" runat="server" ForeColor="White" Font-Size="Small" Font-Bold="True"/>                
        </ContentTemplate>
        </asp:UpdatePanel>
        </Content>
    </ajaxToolkit:AccordionPane>

    <ajaxToolkit:AccordionPane ID="Pane2" runat="server">
        <Header><b>Panel 2</b></Header>
        <Content>
            <asp:UpdatePanel ID="UpdatePanel2" runat="server">
            <ContentTemplate>                    
                <br>
                <asp:textbox id="Age2" runat="server" Width="35" Font-Bold="True"/><br>
                <asp:button ID="Button2" text="Submit" onclick="Button2_Click"
                runat="server"/><br><br>
                <asp:label id="Message2" runat="server" ForeColor="White" Font-Size="Small" Font-Bold="True" />
            </ContentTemplate>
            </asp:UpdatePanel>
        </Content>
    </ajaxToolkit:AccordionPane>
    </Panes>

protected void Button1_Click(object sender, EventArgs e) {
        if (Attorney.Checked) {
            Pane2.Visible = true;
        } else {
            Pane2.Visible = false;
        }
        //Message1.Text = Age1.Text;
    }

私は 5 つのアコーディオン パネルを持っています。最後のパネルは、最初のパネルでチェックボックスがオンになっている場合にのみ表示されます。各アコーディオン パネル内には UpdatePanel があり、その中にはそのアコーディオン パネルに固有のコントロールと送信ボタンを含む ContentTemplate があります。UpdatePanel を追加した理由は、特定のパネルを更新するときに、他のアコーディオン パネルに影響を与えないようにするためです。

問題は、最初のパネルでチェックボックスがオンになっていて送信ボタンがクリックされているかどうかに応じて、最後のアコーディオン パネルの表示を切り替える必要があることです。コード ビハインドでは、btnSubmit1 イベントで...チェックボックスがチェックされているかどうかを示すコードがあります....Pane2.Visible = true それ以外の場合、Pane2.Visible=false. 何らかの理由で、まだ LastPanel が表示されます。

どこが間違っているのかわかりません...アドバイスしてください!

ありがとう!ジニ

4

2 に答える 2

1

外側の更新パネルを追加して問題を修正し、パネル 2 の更新パネルを削除しました。十分にテストしていませんが、今のところ問題ないようです。

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:UpdatePanel ID="OuterPanel" UpdateMode="Always" ChildrenAsTriggers="true" runat="server">
<ContentTemplate>
<ajaxToolkit:Accordion ID="Accordion1" CssClass="accordion" SelectedIndex="0" HeaderCssClass="accordionHeader" 
HeaderSelectedCssClass="accordionHeaderSelected" AutoSize="None" RequireOpenedPane="false" ContentCssClass="accordionContent" runat="server"> 
<Panes>   
    <ajaxToolkit:AccordionPane ID="Pane1" runat="server">
    <Header><b>Panel 1</b></Header>
      <Content>            
            <br>
            Age: <asp:textbox id="Age1" runat="server" Width="35" Font-Bold="True" /><br />
            Attorney: <asp:CheckBox ID="Attorney" runat="server" /><br>
            <asp:button ID="Button1" text="Submit" OnClick="Button1_Click"
            runat="server"/><br>
            <asp:label id="Message1" runat="server" ForeColor="White" Font-Size="Small" Font-Bold="True"/>                                                            
        </Content>
    </ajaxToolkit:AccordionPane>        
    <ajaxToolkit:AccordionPane ID="Pane2" runat="server">
        <Header><b>Panel 2</b></Header>
        <Content>                            
                <br>
                <asp:textbox id="Age2" runat="server" Width="35" Font-Bold="True"/>&nbsp;&nbsp;
                <asp:button ID="Button2" text="Submit" onclick="Button2_Click"
                runat="server"/><br><br>
                <asp:label id="Message2" runat="server" ForeColor="White" Font-Size="Small" Font-Bold="True" />                
        </Content>
    </ajaxToolkit:AccordionPane>
    </Panes>
 </ajaxToolkit:Accordion>
</ContentTemplate>

于 2013-06-26T20:37:42.610 に答える
0

あなたのコードを確認したいのですが、UpdatePanelそれぞれにがあるためだと思いますAccordionPanels。1 つのイベントが発生するとUpdatePanel、ASP.NET は別のイベントに関連付けられているそのイベントを処理するコードを実行しませんUpdatePanel

まず、すべての s を取り出してUpdatePanel、コードが期待どおりに機能するかどうかを確認します。UpdatePanel次に、全体をラップして1 つ追加しAccordion、コードがまだ機能するかどうかを確認します。

本当に 5 が必要だと判断した場合は、 の部分をUpdatePanel調べてください。の ID を指定して、他を PostBack に関連付けることができます。<Triggers>UpdatePanelCheckBoxUpdatePanel

于 2013-06-26T14:30:50.010 に答える