代码之家  ›  专栏  ›  技术社区  ›  Spencer Ruport

尝试自包含使用AjaxToolkit ModalPopUpExtender的弹出窗口

  •  0
  • Spencer Ruport  · 技术社区  · 17 年前

    我的网站上需要存在3种不同类型的ajax弹出窗口。我希望我可以简单地为每个控件创建一个用户控件,并将面板和模式弹出扩展程序放置在每个控件中,但这似乎不起作用。有人以前尝试过这个吗?或者你对如何避免不同页面上每个弹出窗口的重复代码有什么建议吗?谢谢!

    3 回复  |  直到 17 年前
        1
  •  0
  •   Spencer Ruport    17 年前

    啊,我想我已经解决了用户控制的问题。

    ModalPopUpExtender要求设置TargetID属性,否则会发生错误。由于它位于UserControl中,我刚刚创建了一个不做任何事情的虚拟链接按钮,并将visible属性设置为false。

        <asp:LinkButton ID="lnkBlank" runat="server" Visible="false" />
        <asp:Panel ID="plContainer" style="display: none;" runat="server">
                Hello?
        </asp:Panel>
        <cc1:ModalPopupExtender ID="mpe" runat="server" 
                BehaviorID="test"
                TargetControlID="lnkBlank" 
                PopupControlID="plContainer" />
    

    显然,它并不欣赏这一点,从我将visible属性设置为true的那一刻起,它就开始工作了。不确定TargetID的推理是什么,因为我认为,大多数弹出窗口都可以从页面的多个链接中调用。也许我仍然不完全清楚应该如何使用这种控制。

        2
  •  0
  •   Arthurdent510    17 年前

    一种选择是在asp.net用户控件(.ascx页面)中编写弹出窗口,并将其包含在需要弹出窗口的页面上。在ascx页面中有一个公共方法来显示弹出窗口,并在需要时从父页面调用它。如果父页面上已经有一个脚本管理器,则ascx页面上不能有第二个,但除此之外,不应该有任何东西阻止它工作。希望这能有所帮助!

    编辑:这是我的模态弹出扩展控件的样子。..

    <cc1:ModalPopupExtender 
        ID="mpeClassroom" 
        BackgroundCssCLass="modalBackground"      
        runat="server"        
        CancelControlID="lbClose"
        OnOkScript="onOk()"
        TargetControlID="Button1" 
        PopupControlID="pnlClassroom">
    </cc1:ModalPopupExtender>
    

    在我的代码隐藏页中,我的方法只是调用mpeClassroom。显示();

        3
  •  0
  •   bossDida bossDida    16 年前

    隐藏链接作为TrgetControlID的问题在于:;当u将其可见性设置为false时,服务器也不会渲染它。PopExtender在页面上找不到控件。

    与其将其可见性设置为false,不如尝试应用带有display:none的样式。这应该行得通!