我有modal
:
<asp:ModalPopupExtender runat="server" ID="popUp" TargetControlID="btn1" PopupControlID="pnlP" BackgroundCssClass="modalBackground" DropShadow="true" />
使用此updatePanel
:
<asp:UpdatePanel ID="pnlP" runat="server" Width="600" Height="650">
<ContentTemplate>
<asp:Label Text="Hola" runat="server" />
<asp:Button ID="btnCerrarPopUp" runat="server" OnClick="ocultarModal" Text="Adios!" />
</ContentTemplate>
</asp:UpdatePanel>
我想要做的是创建一个 unic方法,当单击ModalPopupExtender显示的面板内的按钮时隐藏ModalPopupExtender ,所以如果我有“N”ModalPopupExtender带有隐藏它的按钮我将始终使用相同的方法,无论哪个ModalPopupExtender - &gt;面板 - &gt;单击按钮。
如何识别应隐藏哪个ModalPopupExtender
?
protected void ocultarModal(Object sender, EventArgs e)
{
// Identify which ModalPopupExtender should hide
// thatModal.Hide();
}
请记住,我有很多ModalPopupExtender
显示panel
button
,{{1}}必须调用相同方法隐藏ModalPopupExtender 。< / p>
请帮助。
答案 0 :(得分:1)
不使用OnClick,而是使用OnCommand,将模态标识符作为命令参数传递。然后,在Code-Behind中,从OnCommand事件中检索参数并使用适当的ModalPopupExtender关闭模式。以下是一个例子:
<asp:ModalPopupExtender runat="server" ID="popUp1" TargetControlID="btn1" PopupControlID="pnlP" BackgroundCssClass="modalBackground" DropShadow="true" />
<asp:UpdatePanel ID="pnlP" runat="server" Width="600" Height="650">
<ContentTemplate>
<asp:Label Text="Hola" runat="server" />
<asp:Button ID="btnCerrarPopUp" runat="server" OnCommand="ocultarModalCommand" CommandArgument="popUp1" Text="Adios!" />
</ContentTemplate>
</asp:UpdatePanel>
您可以在上面看到Modal 1的模式弹出扩展器和更新面板。这里使用的不是OnClick,而是使用OnCommand,并且作为其CommandArgumkent,设置了模态弹出扩展器的ID:&#34; popUp1& #34;
怎么样,看看下面的听众:
protected void ocultarModalCommand(Object sender, CommandEventArgs e)
{
// Identify which ModalPopupExtender should hide
String extenderId = (String) e.CommandArgument;
// hide popup 1
if (extenderId.equals("popUp1") {
popUp1.Hide();
} else if (extender.equals("popUp2") {
// hide popup2
}
// check all other modals
}
在命令侦听器上方获取扩展程序的名称,该名称在命令参数中设置。基于此,它知道要关闭哪个模态。
此外,你可以用听众做一些更好的事情,比如下面的代码:
protected void ocultarModalCommand(Object sender, CommandEventArgs e)
{
// Identify which ModalPopupExtender should hide
String extenderId = (String) e.CommandArgument;
// get the control based on its id
ModalPopupExtender extender = (MOdalPopupExtender) FindControl(extenderId);
if (extender != null)
{
extender.Hide();
}
}
在上面的代码中,您可以根据Command Argument中设置的Id找到扩展器。但是,如果错误地设置了Id,则将返回null并且不会隐藏任何内容。该代码具有比前一代码小得多的巨大优势。
你有它,一个可以关闭所有模态的事件。
答案 1 :(得分:1)
考虑使用JavaScript。弹出元素以_foregroundElement
后缀结束,因此您可以使用jQuery轻松获取它(以ID选择器结尾,作为按钮的父元素)。
然后,剥离_foregroundElement
部分并使用$find(theRemainingPartOfTheString)
对此,您可以引用控件的客户端对象,无论其实际ID或是否为。
然后,调用其hide()
方法,您就完成了。删除回发也会使您的页面更快:)。