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

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

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

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

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

    啊,我发现了我相信用户控制的问题。

    ModalPopupXtender要求设置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    15 年前

    编辑:下面是我的模式弹出扩展控件的外观。。。

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

    在我的代码隐藏页面中,我的方法只调用mpetoolk.Show();

        3
  •  0
  •   bossDida bossDida    15 年前

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

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