2011-06-12 39 views
0

我使用的ASP.NET站点弹性CSS框架。在UpdatePanel执行部分回发之前,它确定了我所拥有的各种容器的大小。据我所知的解决方案是执行JavaScript执行JavaScript的一个线对AJAX的异步事件在ASP.NET

Elastic.refresh(); 

的以下行,我用C#和ASP.NET不错,但没有那么多的JavaScript。据我所知,RegisterStartupScript只注册脚本,我仍然需要一个控制来执行它。

那么,怎样才能让我的JavaScript的这一条线时自定义控件捕获自定义异常,并导致部分回发到执行?

+0

我可能已经做了一个重复:http://stackoverflow.com/questions/338702/how-to-call-a-client-side-javascript-function-after-a-specific-updatepanel都具有一个-是 – 2011-06-12 01:56:21

回答

2

编辑

在您的网页上的JavaScript你也可以尝试这样的事情

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoadedHandler); 
function PageLoadHandler() 
{ 
    Elastic.refresh(); 
} 

该处理器将任何回调之后运行,但sender._postBackSettings.panelID可以让你把它过滤到你想要的面板。

另外,如果结束请求更符合您的需求,您可以尝试。

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
function PageLoadHandler() 
{ 
    Elastic.refresh(); 
} 

原始

你有有在UpdatePanel页面上的ScriptManager控件?如果是这样,你可能能够利用ScriptManager.AsyncPostBackError并让它执行你的方法。

http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.asyncpostbackerror.aspx

+0

感谢您的建议,但我不知道究竟如何,将被使用。 – 2011-06-12 01:04:46

+0

当我读到“当一个自定义的控制捕获自定义异常,并导致部分”我还以为你说的错误是在异步回发时抛出。现在我又看了一遍,我猜想事实并非如此。 :) – 2011-06-12 01:09:02

+0

正确。我有一个自定义控件引发了包含页面捕获的事件。该事件被注册为异步事件的触发器。在该事件结束时,我需要运行一行JavaScript。 – 2011-06-12 01:13:43

1

这是一个猜测,但我会尝试使用文字控制瓦特/包含以下阿贾克斯面板:

<script language="javascript"> 
Elastic.refresh(); 
</script> 

如果我是正确的阿贾克斯面板将重新加载,并自动将当它执行时执行该行代码。

+0

想法不错,但似乎并没有工作,试图把它在各级页面和容器。 – 2011-06-12 00:57:38