两个ModalPopupExtenders使用相同的方式,只有一个工作

本文关键字:方式 有一个 工作 ModalPopupExtenders 两个 | 更新日期: 2023-09-27 17:50:38

在gridview中,我有一个"Email"按钮和一个"Delete"按钮,使用modalpopupextender打开一个Modal弹出窗口。问题是,当单击按钮时,"电子邮件"窗口打开,但单击其按钮时,"删除"窗口不打开。我以相同的方式使用这两个modalpopupextenders。

 <asp:ButtonField ButtonType="Button" CommandName="Email" Text="Email" />
                    <asp:ButtonField ButtonType="Button"  CommandName="Delete" Text="Delete" />
<%-- Email modal--%>      
    <asp:Panel ID="pnlPopupEmail" runat="server" Width="500px" Style="display: none">
    <asp:UpdatePanel ID="updPnlEmail" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
     <asp:Button ID="btnShowEmail" runat="server" Style="display: none" />
                <ajaxToolkit:ModalPopupExtender ID="mdlPopupEmail" runat="server" TargetControlID="btnShowEmail"
                    PopupControlID="pnlPopupEmail" CancelControlID="btnCancel" BackgroundCssClass="modalBackground" />
        <div class="EmailPopup">
            <table>
                <tr>
                    <td>
                        To:
                    </td>
                    <td>
                       <asp:TextBox ID="EmailTo" runat="server" Width="350"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                        From:
                    </td>
                    <td>
                        <asp:TextBox ID="EmailFrom"  runat="server" Width="350"></asp:TextBox>
                    </td>
                </tr>
                 <tr>
                    <td>
                        Subject:
                    </td>
                    <td>
                        <asp:TextBox ID="Subject" runat="server" Width="350"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td></td>
                       <td> <asp:TextBox ID="EmailMessageBox" Width="350" Height="150" runat="server" TextMode="MultiLine" Wrap="true"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td>
                    </td>
                    <td>
                        <asp:LinkButton ID="SendBtn" runat="server" OnClick="SendBtn_Clicked" Text="Send" />
                        <asp:LinkButton ID="btnCancel" runat="server" Text="Cancel" CausesValidation="false" />
                    </td>
                    <td>
                        <asp:Label ID="theID" runat="server" Visible="false"></asp:Label>
                    </td>
                </tr>
                </table>
        </div>
    </ContentTemplate>
    </asp:UpdatePanel>
    </asp:Panel>
   <%-- -----end email modal--%>
    <%-- Start Delete Confirmation Modal --%>
    <asp:Panel ID="DelConfirmPanel" runat="server" Width="500px" Style="display: none">
        <asp:UpdatePanel ID="DelConfirmUpdatePanel" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
            <asp:Label ID ="TESTLabel" runat="server" Text="Are you sure?" ></asp:Label>
                <asp:Button ID="DelModalButton" runat="server" Style="display: none" />
                <ajaxToolkit:ModalPopupExtender ID="modalPopUpDelConfirm" runat="server" TargetControlID="DelModalButton"
                    PopupControlID="DelConfirmPanel" CancelControlID="DeleteCancel" BackgroundCssClass="modalBackground" />
                <div class="DeletePopup">
                    <asp:LinkButton ID="DelConfirmedButton" runat="server" OnClick="DeleteConfirmation_Clicked"
                        Text="Delete" />
                    <asp:LinkButton ID="DeleteCancel" runat="server" Text="Cancel" CausesValidation="false" />
                </div>
            </ContentTemplate>
        </asp:UpdatePanel>
    </asp:Panel>
    <%-- End Delete Confirmation Modal --%>
</div>

然后在代码后面,我有一个方法来检查命令名和更新updatepanel,并显示modalpopupextender。

protected void btn_Clicked(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Email")
    {
        // a bunch of stuff that I am leaving out but is just changing fields in the
        //table withing the modal popup
        updPnlEmail.Update();
        mdlPopupEmail.show();
    }
    if (e.CommandName.Equals("Delete"))
    {
        int index = Convert.ToInt32(e.CommandArgument);
        String id = gvReservations.DataKeys[index].Value.ToString();    // get id
        try
        {
            DelConfirmUpdatePanel.Update();
            modalPopUpDelConfirm.Show();
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
}

你知道为什么一个有效而另一个不行吗?有没有一种好的方法来调试这种错误?非常感谢您的帮助!

两个ModalPopupExtenders使用相同的方式,只有一个工作

我明白了

<asp:ButtonField ButtonType="Button"  CommandName="Delete" Text="Delete" />

这就是问题所在。我没有意识到"删除"是一个保留的命令名。当这个按钮被点击时,一个异常被抛出说它不能从表中删除。因此,模态弹出窗口从未显示。我通过在chrome工具中打开javascript控制台来解决这个问题。

因此,为了修复它,我将命令名称更改为其他内容,现在一切都按预期工作。