为什么我的asp更新面板只刷新一次

时间:2014-05-07 06:54:12

标签: c# html asp.net

您好我有一个asp updatePanel,其中包含几个asp面板。应该运行的方式是单击第一个面板中的按钮,它隐藏该面板并显示下一个面板。这很好用,下一个面板问题来了。如果我尝试使用该面板中的任何一个按钮控件,则不会发生任何事情。

继承人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>

c#c​​ode

    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设置为可见,并且该方法工作正常。

提前致谢

查理

2 个答案:

答案 0 :(得分: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;
    }

希望这会有所帮助。快乐的编码.. !!!

答案 1 :(得分:0)

我有同样的问题所以我刚刚添加了CausesValidation =“False”然后它适用于我。所以请在btnBackRejCom按钮中添加CausesValidation,如下所示

请尝试

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

我觉得它适合你:)