创建动态ModalPopup时出现问题

时间:2009-10-16 06:36:04

标签: asp.net vb.net ajax

我想动态创建一个modalpopup但我遇到了一个问题。我在这里贴了我的子,我不知道该怎么办。当我想要显示modalpopup时,它说 “类型'ModalPopupExtender'的控件'mdldelete2'必须放在带有runat = server的表单标签内。”我该如何解决这个问题?

Public Sub Raise_Alarm(ByRef p_Page As Page, 
                       ByRef p_AssignedButton As System.Web.UI.WebControls.Button,
                       ByVal p_Message As String)

    Dim mdldelete2 As Global.AjaxControlToolkit.ModalPopupExtender = 
                        p_Page.Page.FindControl("mdldelete2")

    If mdldelete2 Is Nothing Then
        mdldelete2 = New Global.AjaxControlToolkit.ModalPopupExtender
    End If

    With mdldelete2

        .TargetControlID = p_AssignedButton.ID
        .PopupControlID = "pnlDelete"
        .ID = "mdldelete2"
        .BackgroundCssClass = "modalBackground"
        .OkControlID = "btnDeleteOk"
        .CancelControlID = "btnDeleteCancel"
    End With

    p_Page.Controls.Add(mdldelete2)

    Dim mylabel As Label
    mylabel = p_Page.FindControl("lblStatus")

    mylabel.Text = p_Message
    mdldelete2.Show()

End Sub

2 个答案:

答案 0 :(得分:0)

实际上,您应该将mdldelete2控件添加到Form控件的Controls集合中,而不是直接添加到Page中 - 这可能有所帮助。

我经常发现为这种事情添加PlaceHolder控件更容易 - 它不会直接向页面添加任何内容,而是为您提供一个命名容器来查找和添加控件。

另外,只是一点 - 如果您确实使用Page.FindControl方法找到了控件的实例,那么您不需要再次将其添加到表单集合中,因为它已经在那里。

答案 1 :(得分:0)

看起来您需要将一个ScriptManager控件添加到aspx

<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>