Sys.Application.add_load模式弹出扩展器问题

时间:2009-02-12 15:57:50

标签: asp.net javascript ajax asp.net-ajax ajaxcontroltoolkit

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

我有一个包含表单的Modal弹出扩展器。有一个功能“保存并添加新”,当用户单击此按钮时,表单中的数据将在回发期间保存在数据库中并重新加载页面。

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

我试图先用这种方式调用它:

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

但问题是当函数被调用时我的Modal Popup还没有出现在页面上。因为代码在

上崩溃了
var modal = $find('myModal');

所以,我发现其他方式,并且它的工作几乎完美。

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

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

示例:我有另一个用于删除数据的模态弹出窗口,当我点击按钮时,两个模态都出现了,这并不酷。

有没有人知道如何解决这个问题或更好的方法呢?

P.S。我没有调用Modal popup服务器端,因为页面中存在javascript函数,所以我不想在RegisterStartupScript中创建这个函数的副本。

你的时间。

2 个答案:

答案 0 :(得分:2)

使用以下代码段

//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);
}

答案 1 :(得分:2)

最后,我找到了解决当前问题的方法。

我还在使用ClientScript.Resgister [...],但这次我还更改了取消按钮的OnClientClick Javascript功能。

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

我也认为,问题可能存在,因为我的代码中有不同的更新面板,但我需要它们才能使Modal Popup Extender工作。

无论如何,我发现它甚至不在Opera和Safari中工作,而是整个事物(Ajax Control工具包 - Modal popup extender)。

这是一个机会,这里的compagny不关心对方,并正式支持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中出现另一个错误,

Sys.WebForms.PageRequestManagerServerErrorException:在服务器上处理请求时发生未知错误。从服务器返回的状态代码为:0

我找到了这个工作,但这并不是最好的,但是我失去了时间... ...

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)

那么请大家帮忙Ramesh,我很确定如果不是我的更新面板,你的解决方案就会有效。

希望可以帮助别人。