Почему панель обновления asp обновляется только один раз?

0

Привет У меня есть asp updatePanel, который содержит несколько панелей asp. Способ, которым он должен функционировать, - это нажать кнопку на первой панели, которая скрывает эту панель, и показывает следующую. Это прекрасно работает, проблема возникает со следующей панелью. Если я попытаюсь использовать любой из кнопок управления на этой панели, ничего не происходит.

Heres html

<asp:UpdatePanel runat="server" ChildrenAsTriggers="true">
            <ContentTemplate>
                <asp:Panel ID="pnlAppRej" runat="server" HorizontalAlign="Center" CssClass="textBox"
                    Width="85%" Visible="True">
                    <div style="text-align:left; width:90%">
                        <asp:Label ID="lblAppRej" runat="server" Text="Label"></asp:Label>
                    </div>
                    <asp:Button ID="btnApprove" runat="server" Text="Approve" CssClass="button" Style="margin-right: 20px;
                        margin-top: 10px" Width="100px" onclick="btnApprove_Click" />
                    <asp:Button ID="btnReject" runat="server" CssClass="button" Text="Reject" Style="margin-left: 20px"
                        Width="100px" onclick="btnReject_Click" />
                </asp:Panel>
                <asp:Panel runat="server" ID="pnlRejCom" Width="85%" Visible="False" CssClass="textBox">
                    <div style="text-align: left">
                        Comments<br />
                    </div>
                    <asp:TextBox ID="tbRejCom" runat="server" Height="54px" TextMode="MultiLine" Width="95%"
                        CssClass="textBox" Style="margin-top: 5px" ValidationGroup="rejCom"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="tbRejCom"
                        ErrorMessage="RequiredFieldValidator" ValidationGroup="rejCom">*</asp:RequiredFieldValidator>
                    <br />
                    <div style="text-align: center">
                        <asp:Button ID="btnBackRejCom" runat="server" CssClass="button" Text="Back" Style="margin-right: 20px;
                            margin-top: 10px" Width="100px" />
                        <asp:Button ID="btnDoneRejCom" runat="server" CssClass="button" Text="Done" Style="margin-left: 20px;
                            margin-top: 10px" Width="100px" ValidationGroup="rejCom" 
                            onclick="btnDoneRejCom_Click" />
                    </div>
                </asp:Panel>
            </ContentTemplate>
        </asp:UpdatePanel>

Код С#

    protected void btnReject_Click(object sender, EventArgs e)
    {
         pnlRejCom.Visible = true;
         pnlAppRej.Visible = false;
    }
    protected void btnBackRejCom_Click(object sender, EventArgs e)
    {
        pnlRejCom.Visible = false;
        pnlAppRej.Visible = true;
    }

его метод btnBackRejCom_Click, который, похоже, не срабатывает. Но я тестировал настройку pnlRejCom на видимый, и метод работает нормально.

заранее спасибо

Чарли

  • 0
    попробуйте использовать <Trigger> для своих кнопок
  • 0
    Я не думаю, что это будет иметь какое-либо значение, если для свойства ChildrenAsTriggers установлено значение true?
Теги:

2 ответа

1
Лучший ответ

ваша проблема кажется другой. Я бы предложил, удалить

 protected void btnBackRejCom_Click(object sender, EventArgs e){}

и снова создайте новое событие.

Это то, что я пробовал и сейчас прекрасно работает.

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <Triggers>
                    <asp:PostBackTrigger ControlID="btnReject" />
                    <asp:AsyncPostBackTrigger ControlID="btnBackRejCom" />
                    <asp:PostBackTrigger ControlID="btnDoneRejCom" />
                </Triggers>
                <ContentTemplate>
                    <asp:Panel ID="pnlAppRej" runat="server" HorizontalAlign="Center" CssClass="textBox"
                        Width="85%" Visible="True">
                        <div style="text-align: left; width: 90%">
                            <asp:Label ID="lblAppRej" runat="server" Text="Label"></asp:Label>
                        </div>
                        <asp:Button ID="btnApprove" runat="server" Text="Approve" CssClass="button" Style="margin-right: 20px; margin-top: 10px"
                            Width="100px" OnClick="btnApprove_Click" />
                        <asp:Button ID="btnReject" runat="server" CssClass="button" Text="Reject" Style="margin-left: 20px"
                            Width="100px" OnClick="btnReject_Click" />
                    </asp:Panel>
                    <asp:Panel runat="server" ID="pnlRejCom" Width="85%" Visible="False" CssClass="textBox">
                        <div style="text-align: left">
                            Comments<br />
                        </div>
                        <asp:TextBox ID="tbRejCom" runat="server" Height="54px" TextMode="MultiLine" Width="95%"
                            CssClass="textBox" Style="margin-top: 5px" ValidationGroup="rejCom"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="tbRejCom"
                            ErrorMessage="RequiredFieldValidator" ValidationGroup="rejCom">*</asp:RequiredFieldValidator>
                        <br />
                        <div style="text-align: center">
                            <asp:Button ID="btnBackRejCom" runat="server" CssClass="button" Text="Back" Style="margin-right: 20px; margin-top: 10px"
                                Width="100px" OnClick="btnBackRejCom_Click1" />
                            <asp:Button ID="btnDoneRejCom" runat="server" CssClass="button" Text="Done" Style="margin-left: 20px; margin-top: 10px"
                                Width="100px" ValidationGroup="rejCom"
                                OnClick="btnDoneRejCom_Click" />
                        </div>
                    </asp:Panel>
                </ContentTemplate>
            </asp:UpdatePanel>

код позади:

protected void btnBackRejCom_Click1(object sender, EventArgs e)
    {
        pnlRejCom.Visible = false;
        pnlAppRej.Visible = true;
    }

Надеюсь это поможет. Счастливое кодирование.. !!!

  • 0
    настройка всех элементов управления на PostBackTrigger работала отлично, спасибо
  • 0
    пожалуйста :)
0

У меня такая же проблема, поэтому я только что добавил CausesValidation = "False", тогда она отлично работает для меня. Так что добавьте CausesValidation в btnBackRejCom, как показано ниже

Попробуйте

 <asp:Button ID="btnBackRejCom" runat="server"  CausesValidation="False" CssClass="button" Text="Back" Style="margin-right: 20px;
                            margin-top: 10px" Width="100px" />

Я думаю, это работает для вас :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню