如何防止在回发时关闭模态弹出窗口(ModalPopupExtender)?

时间:2008-09-03 14:42:12

标签: asp.net

我正在使用Microsoft AjaxControlToolkit进行模态弹出窗口。

在模态弹出窗口中,当发生回发时,窗口正在关闭。如何阻止模态弹出窗口的关闭操作?

7 个答案:

答案 0 :(得分:11)

将控件放在更新面板中。请参阅我的示例代码,pnlControls是控件,它包含将在弹出窗口中显示的控件:

<asp:Panel ID="pnlControls" runat="server">

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
               <asp:Button ID="TestButton" runat="server" Text="Test Button" onclick="TestButton_Click" />
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>         
        </ContentTemplate>

    </asp:UpdatePanel>

这将为您完成工作:)

祝你好运, Gregor Primar

答案 1 :(得分:7)

您可以在回发期间调用Show()方法以防止模式弹出窗口关闭

MyModalPopoupExtender.Show()

答案 2 :(得分:4)

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        // reshow
        MyModalPopup.Show()
    }
}

答案 3 :(得分:1)

我想这可行,但不是我的情况。我有一个在模态弹出窗口中打开的用户控件,这个用户控件使回发本身。所以在那个用户控件中我没有模态弹出属性。

我想,我要为我的用户控件创建一个事件,打开模态弹出窗口的页面必须在此事件中重新打开它。

答案 4 :(得分:1)

就像你已经知道的那样,模态弹出窗口只是客户端,是的,你可以在回发期间收集信息,但如果你做回发,他会100%隐藏时间。

当然,和其他提议一样,你可以在回发期间做一个.show,但这取决于你需要做什么。

实际上,我不知道为什么你需要一个回发,如果它是为了一些验证尝试在客户端做。

你能告诉我们为什么你需要做回发,也许我们可以帮助你更好! :)

答案 5 :(得分:1)

遵循先前的案例......

在Simple.aspx中,用户必须输入公司名称。如果用户不记得公司名称,他可以点击一个按钮,打开一个弹出模式窗口。

我想在模态窗口中执行的操作是允许用户搜索公司列表。他可以输入部分名称并单击搜索。匹配将显示在下面的列表中。他可以单击列表中的项目并返回。如果公司不存在,他可以点击“新建”按钮创建一个新公司。

所以,正如你所看到的,我想在这个模态窗口中有很多功能。

谢谢!

JC

答案 6 :(得分:1)

在回发期间保持模态打开时遇到同样的问题。

我的解决方案:

使用EventTarget确定回发是否来自模态中的控件,如果是,则保持模型打开。如果模态打开,回发可以来自模态中的控件。

在包含模态的页面控件的加载事件中。确定回发是否来自 我的孩子。确定它是否来自模态面板中的控件。

    Protected Sub Control_Load(sende As Object, e As EventArgs) Handles Me.Load
        If IsPostBack Then
            Dim eventTarget As String = Page.Request.Params.Get("__EventTarget")
            Dim eventArgs As String = Page.Request.Params.Get("__EventArgument")

            If Not String.IsNullOrEmpty(eventTarget) AndAlso eventTarget.StartsWith(Me.UniqueID) Then
                If eventTarget.Contains("$" + _credentialBuilder.ID + "$") Then
                    ' Postback from credential builder modal.  Keep it open.
                    showCredentialBuilder = True
                End If
            End If
        End If
    End Sub

在预渲染中检查我的旗帜并手动显示模态

    Protected Sub Control_PreRender(ByVal sende As Object, ByVal e As EventArgs) Handles Me.PreRender
        If showCredentialBuilder Then
            _mpeCredentialEditor.Show()
        End If
    End Sub