代码之家  ›  专栏  ›  技术社区  ›  ForceMagic chooselife

Sys.Application.add_模式弹出扩展程序的加载问题

  •  3
  • ForceMagic chooselife  · 技术社区  · 16 年前

    我有当前的问题,让我们先解释一下上下文:

    我希望此模式弹出窗口再次出现在页面上,允许用户输入新数据,而无需再次单击显示此模式弹出窗口的按钮。

    我试着先这样称呼它:

    ClientScript.RegisterStartupScript(Page.GetType(), "ModalPopup", "ShowModalPopup(""" & Me.formModalButton.ID & """);", True)
    

    var modal = $find('myModal');
    

    所以,我找到了另一种方法,它正在发挥作用 几乎

    ClientScript.RegisterStartupScript(Page.GetType(), "ModalPopup", "Sys.Application.add_load(function() {ShowModalPopup(""" & Me.formModalButton.ID & """)};", True)
    

    模态显示在页面加载上,就像我想要的一样,但问题是如果我点击页面上的任何其他按钮,模态弹出窗口也会再次出现。

    另外,我没有调用模式弹出服务器端,因为页面中存在javascript函数,所以我不想在RegisterStartupScript中创建此函数的副本。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Ramesh César Landesa    16 年前

    使用下面的代码段

    //Declares gloabal variable
    ClientScript.RegisterStartupScript(Page.GetType(),"vardeclaration","var reloadModal;",true);
    
    ClientScript.RegisterStartupScript(Page.GetType(), "ModalPopup", "Sys.Application.add_load(
    
    function() 
    {
       reloadModal = function() {ShowAddModalPopup(""" & Me.imgAdd.ID & """);};
       Sys.Application.add_init(reloadModal);
    }
    );", True)
    

    这将允许您使用

    function cancelClick()
    {
       Sys.application.remove_init(reloadModal);
    }
    
        2
  •  2
  •   ForceMagic chooselife    16 年前

    因此,当这个家伙选择“保存并添加新”功能时,当页面重新加载并且再次显示模式时,如果他单击“取消”,我会回发到服务器,只是为了重新加载页面并解决那些奇怪的行为。

    我还认为,由于我的代码中有不同的更新面板,这个问题可能存在,但我需要它们来使模式弹出扩展程序工作。

    不管怎样,我发现它甚至不适用于Opera和Safari,而是全部(Ajax控制工具包-Modal popup extender)。

    这是一个机会,这里的公司不关心对方,只正式支持IE。在我的情况下,我想让它至少在FF和Chrome中工作。

    ClientScript.RegisterStartupScript(Page.GetType(), "ModalPopup", "Sys.Application.add_load(function() {ShowAddModalPopup(""" & Me.imgAdd.ID & """)});", True)
                    btnCancel.OnClientClick = "resetDefaultValue();__doPostBack('" & btnCancel.ID & "','onclick')"
    

    这就是代码,在FF中也出现了另一个错误,

    我找到了这个解决办法,这不是最好的,但我浪费了足够的时间。。。

    ClientScript.RegisterStartupScript(Page.GetType(), "WorkAroundFF", "Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest); function endRequest(sender, args) { /* Check to see if there's an error on this request.*/ if (args.get_error() != undefined) { $get('Error').style.visibility = ""visible""; /* Let the framework know that the error is handled, so it doesn't throw the JavaScript*/ alert. args.set_errorHandled(true); } }", True)
    

    所以thx感谢你的帮助Ramesh,我很确定如果不是我的更新面板,你的解决方案会起作用。