javascript里通过脚本触发UpdatePanel的刷新
2010-12-24 16:16
288 查看
最近需要用到这么个功能,网上找了找,方法不少,挑了一种最简单的记录下来:
首先,UpdatePanel里要声明一下OnLoad方法,如下:
<asp:UpdatePanelID="UpdatePanel1"runat="server"OnLoad="UpdatePanel1_Load">
<ContentTemplate>
...
</ContentTemplate>
</asp:UpdatePanel>
接着,在你需要触发UpdatePanel的时候通过如下方法
__doPostBack('<%=UpdatePanel1.ClientID%>','');
我是在ajax里面调用的,页面文档操作完成后调用他
$.ajax({
type:"GET",
url:"UserRelationAjaxCall.aspx",
dataType:"text",
data:"Type=UserGroup&RelationID="+relationId+"&UserGroupStr="+passStr.trim(),
success:function(msg){
groupsArray=msg.decodeURIComponent().split('|');
generateGroups();
$('#no_group').hide()
//Aysnrefreshlistpanel
__doPostBack('<%=UpdatePanel1.ClientID%>','');
},
error:function(msg){
alert("Error");
}
});
这样就是先局部刷新了.
再补充点知识:
开发人员常遇到的三种ajax问题:
1.页面在局部postback时还是触发刷新了
2.没有更新时updatepanel居然触发更新了
3.Load事件完成后控件的事件被触发
1.页面在局部postback时还是触发刷新了:
很多开发人员不清楚的是,在局部postback中,页面的所有生命周期中的事件全部会触发,在页面局部回发过程中,页面的控件树会被重新建立并且每个控件都会执行其生命周期的事件,
在局部回发中,Page.IsPostBackistrue.但是ScriptManager.IsInAsyncPostBackistrue仅仅在局部回发中
2.每次UpdatePanel都会跟着更新
尽量使用UpdatePanel的生命周期事件,像Init,Load,PreRender,Unload,这样可以清楚的区分和更安全的使用__doPostBack,如果不想每次都调用,就在调用之前判断下:protectedvoidUpdatePanel1_PreRender(objectsender,EventArgse)
{
//Thiscodewillonlybeexecutedifthepartialpostback
//wasraisedbya__doPostBack('UpdatePanel1','')
if(Request["__EVENTTARGET"]==UpdatePanel1.ClientID)
{
//Insertmagichere.
}
}
总结下,几点注意:
Page_Load每次都会执行,在这一点上,局部刷新和全页刷新没有区别
通过对_doPostBack,__EVENTTARGET一起使用可以将刷新先定于特定目标(通常是子panel)
首先,UpdatePanel里要声明一下OnLoad方法,如下:
接着,在你需要触发UpdatePanel的时候通过如下方法
__doPostBack('<%=UpdatePanel1.ClientID%>','');
我是在ajax里面调用的,页面文档操作完成后调用他
这样就是先局部刷新了.
再补充点知识:
开发人员常遇到的三种ajax问题:
1.页面在局部postback时还是触发刷新了
2.没有更新时updatepanel居然触发更新了
3.Load事件完成后控件的事件被触发
1.页面在局部postback时还是触发刷新了:
很多开发人员不清楚的是,在局部postback中,页面的所有生命周期中的事件全部会触发,在页面局部回发过程中,页面的控件树会被重新建立并且每个控件都会执行其生命周期的事件,
在局部回发中,Page.IsPostBackistrue.但是ScriptManager.IsInAsyncPostBackistrue仅仅在局部回发中
2.每次UpdatePanel都会跟着更新
尽量使用UpdatePanel的生命周期事件,像Init,Load,PreRender,Unload,这样可以清楚的区分和更安全的使用__doPostBack,如果不想每次都调用,就在调用之前判断下:
总结下,几点注意:
Page_Load每次都会执行,在这一点上,局部刷新和全页刷新没有区别
通过对_doPostBack,__EVENTTARGET一起使用可以将刷新先定于特定目标(通常是子panel)
相关文章推荐
- UpdatePanel触发javascript脚本的方法附代码
- UpdatePanel触发javascript脚本技巧
- UpdatePanel触发javascript脚本技巧
- UpdatePanel触发javascript脚本技巧javascript
- UpdatePanel触发javascript脚本技巧
- UpdatePanel触发javascript脚本的方法附代码
- UpdatePanel里如果要调用JavaScript脚本应注意
- DropDownList 触发回发报JS错误 ,updatePanel无刷新,前台JS获取后台动态值
- 解决UpdatePanel无刷新,注册客户端脚本不执行问题
- 自定义控件在AJAX的UpdatePanel中使用时添加javascript脚本方法
- 用JavaScript触发UpdatePanel更新的几种方法
- 用JavaScript触发UpdatePanel更新的几种方法
- ASP.NET中UpdatePanel的javascript脚本失效的问题
- 解决UpdatePanel无刷新,注册客户端脚本不执行问题
- updatepanel刷新后重新加载js脚本问题
- 客户端脚本刷新UpdatePanel的链接
- ASP.NET Ajax UpdatePanel 刷新時的淡出淡入效果
- javascript异步加载脚本并触发回调函数
- UpdatePanel和jQuery不兼容 局部刷新jquery失效
- Asp.net采用UpdatePanel局部刷新js失效问题