Asp.net 如何让javascript在更新面板中执行

Asp.net 如何让javascript在更新面板中执行,asp.net,javascript,jquery-plugins,updatepanel,Asp.net,Javascript,Jquery Plugins,Updatepanel,我有一个更新面板,其中包含一个表,我通过单击按钮向其中添加控件行。添加的控件之一是用户控件,它是日期选择器。在该用户控件内部,我有一个文本框,我有一个JQuery,它将JQuery UI DatePicker插件应用到它,从而将它变成一个日期选择器。如果用户控件被动态加载到页面上,这不是问题,但是,如果它是在更新面板内的异步回发上完成的,javascript不会启动,因此文本框是呈现的,但没有所有jquery datepicker功能。以下是DatePicker.ascx中的一些代码: $(fu

我有一个更新面板,其中包含一个表,我通过单击按钮向其中添加控件行。添加的控件之一是用户控件,它是日期选择器。在该用户控件内部,我有一个文本框,我有一个JQuery,它将JQuery UI DatePicker插件应用到它,从而将它变成一个日期选择器。如果用户控件被动态加载到页面上,这不是问题,但是,如果它是在更新面板内的异步回发上完成的,javascript不会启动,因此文本框是呈现的,但没有所有jquery datepicker功能。以下是DatePicker.ascx中的一些代码:

$(function() {
       //reset the localization
        $.datepicker.setDefaults($.extend($.datepicker.regional['']));
        $("#<%=txtDate.ClientID%>").datepicker({ dateFormat: 'mm/dd/yy', showOn: 'button', buttonImage: '/images/calendar.gif', buttonImageOnly: true, altField: '#<%=txtDate.ClientID%>' });
$(函数(){
//重置本地化
$.datepicker.setDefaults($.extend($.datepicker.regional['']);
$(“#”).datepicker({dateFormat:'mm/dd/yy',showOn:'button',buttonImage:'/images/calendar.gif',buttonImage:'true,altField:';
}


因此,当控件在异步回发中动态加载时,不会触发此jquery。那么我如何才能使其工作?

当您在响应中呈现脚本时,它只执行以下操作:呈现脚本。在页面呈现期间,脚本第一次呈现,并且在编写此代码时已经发生了这种情况执行

Microsoft为此提出了一个解决方案,即通过
ScriptManager.RegisterClientScriptBlock
注册脚本块,然后ScriptManager将确保在页面加载后执行脚本

根据您的情况,这可能会有帮助,也可能不会有帮助。或者,在中间阶段:可能只有一些变通方法才有帮助。从您的评论中,我可以想到一种我可能考虑使用的变通方法:


GetClientScript
方法添加到UserControl,返回JavaScript。如果在常规页面加载中加载UserControl,则在当前呈现脚本的位置调用该方法。如果在UpdatePanel回发中加载该控件,则使用该方法从控件获取scriptbody,即d在手边的ScriptManager中注册它。在这种情况下,您还应该将一个参数传递回UserControl,以避免再次注册脚本(通常是这样做的)。

是DatePicker.ascx在初始加载期间将该javascript插入页面顶部吗?然后该函数失败,因为没有加载DatePicker但是。然后将异步上的datepicker加载到更新面板中,但未调用该函数。

在DatePicker上查找会话 它说ASP.NET AJAX UpdatePanel会擦除DOM,因此不会触发加载。 文章说你可以使用EndRequest处理程序或pageLoad快捷方式,但是我认为如果你不能在ScriptManager中注册javascript


希望这有帮助。

我该怎么做?该脚本是用户控件的一部分,可能并不总是加载到带有更新面板和脚本管理器的页面中。我完全编辑了我的回复以适应您的请求。希望帮助谢谢,我想我必须这样做。Web开发仍然像以前一样糟糕。我希望事情会变得更好st一起玩得很好。谢谢,但是pageLoad方法不起作用,因为我的javascript是用户控件的一部分,而用户控件是在updatepanel中加载的。不过谢谢你提供的信息,非常有趣。