ScriptManager和UpdatePanel控件联合使用可以实现页面局部异步刷新的效果。UpdatePanel用来设置页面中局部异步刷新的区域,它必须依赖于ScriptManager,因为ScriptManager控件提供了客户端脚本生成与管理UpdatePanel的功能。

ScriptManager属性 解释
EnablePartialRendering 如果启用了部分呈现且禁止了整页更新,则为 true;否则为 false。 默认值为 true。
UpdatePanel属性 解释
ChildrenAsTriggers 当UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanel的更新;当UpdateMode属性为Always时,ChildrenAsTriggers必须设置为true。
RenderMode 表示UpdatePanel最终呈现的HTML元素。Block(默认)表示< div>,Inline表示< span>。
UpdateMode 表示UpdatePanel的更新模式,有两个选项:Always和Conditional,默认值是Always。Always表示不管有没有Trigger,其他控件都将更新该UpdatePanel;Conditional表示只有当前UpdatePanel的Trigger或ChildrenAsTriggers属性为true时,当前UpdatePanel中控件引发的异步回送或整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel。

一、实例一

UpdatePanel内部控件引起的回发,来异步更新当前UpdatePanel内部其他控件的内容。
前台代码如下:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate><div>    <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlCity_SelectedIndexChanged"></asp:DropDownList><br /><asp:DropDownList ID="ddlCounty" runat="server"></asp:DropDownList><br />用户名:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox></div></ContentTemplate>
</asp:UpdatePanel>

后台代码如下:

protected void Page_Load(object sender, EventArgs e)
{if (!IsPostBack){ddlCity.Items.Add(new ListItem("annotate", "1"));ddlCity.Items.Add(new ListItem("diagram", "2"));ddlCity.Items.Add(new ListItem("cryptography", "3"));ddlCity.Items.Add(new ListItem("explicit", "4")); ddlCity.Items.Add(new ListItem("implicit", "5"));ddlCounty.Items.Add(new ListItem("allot", "1"));ddlCounty.Items.Add(new ListItem("require", "2"));ddlCounty.Items.Add(new ListItem("assign", "3"));ddlCounty.Items.Add(new ListItem("redundant", "4"));ddlCounty.Items.Add(new ListItem("mandatory", "5"));txtUserName.Text = "guoguo";}
}protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
{ddlCounty.Items.Add(new ListItem("bonus", "6"));txtUserName.Text += "9";
}

注意:
此时ScriptManager的EnablePartialRendering属性应设为true(默认即为true);
UpdatePanel的UpdateMode属性应设为Always(默认即为Always);
UpdatePanel的ChildAsTrigger属性应设为true(默认即为true);

二、实例二

UpdatePanel外部控件引起的回发,来异步更新UpdatePanel内部控件的内容。
上面的方式能够实现简单地异步局部更新的功能,但就性能方面考虑,我们应当只将数据确实会发生变化的控件放到UpdatePanel中,这就可能出现引起回发的控件不在UpdatePanel内的情况。我们有两种方式实现这种效果:
A、在Page_Load中用ScriptManager1.RegisterAsyncPostBackControl()注册一下要实现异步回发的控件。
B、用触发器来实现更新特定UpdatePanel。

(所有UpdatePanel都刷新)方法A前台代码:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate><div>    <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="True"></asp:DropDownList><br />用户名:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox><%=DateTime.Now %></div></ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server"><ContentTemplate><div>    <asp:DropDownList ID="ddlCounty" runat="server" AutoPostBack="True"></asp:DropDownList><br />密码:<asp:TextBox ID="txtUserPwd" runat="server"></asp:TextBox><%=DateTime.Now %></div></ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnPart" runat="server" Text="局部刷新" OnClick="btnPart_Click" />
<asp:Button ID="btnPage" runat="server" Text="整页刷新" OnClick="btnPage_Click" />

(所有UpdatePanel都刷新)方法A后台代码:

protected void Page_Load(object sender, EventArgs e)
{ScriptManager1.RegisterAsyncPostBackControl(this.btnPart);if (!IsPostBack){ddlCity.Items.Add(new ListItem("annotate", "1"));ddlCity.Items.Add(new ListItem("diagram", "2"));ddlCity.Items.Add(new ListItem("cryptography", "3"));ddlCity.Items.Add(new ListItem("explicit", "4"));ddlCity.Items.Add(new ListItem("implicit", "5"));ddlCounty.Items.Add(new ListItem("allot", "1"));ddlCounty.Items.Add(new ListItem("require", "2"));ddlCounty.Items.Add(new ListItem("assign", "3"));ddlCounty.Items.Add(new ListItem("redundant", "4"));ddlCounty.Items.Add(new ListItem("mandatory", "5"));txtUserName.Text = "guoguo";txtUserPwd.Text = "bala";}
}protected void btnPart_Click(object sender, EventArgs e)
{ddlCity.Items.Add(new ListItem("bonus", "6"));txtUserName.Text += "9";
}protected void btnPage_Click(object sender, EventArgs e)
{ddlCity.Items.Add(new ListItem("bonus", "6"));txtUserName.Text += "9";
}

注意:
此时ScriptManager的EnablePartialRendering属性应设为true(默认即为true);
UpdatePanel的UpdateMode属性应设为Always(默认即为Always);
UpdatePanel的ChildAsTrigger属性应设为true(默认即为true);

(特定UpdatePanel刷新)方法A前台代码:
需要在btnPart控件的Click事件方法体的后面加入代码:UpdatePanel1.Update();

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"><ContentTemplate><div>    <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="True"></asp:DropDownList><br />用户名:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox><%=DateTime.Now %></div></ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode=" Conditional"><ContentTemplate><div>    <asp:DropDownList ID="ddlCounty" runat="server" AutoPostBack="True"></asp:DropDownList><br />密码:<asp:TextBox ID="txtUserPwd" runat="server"></asp:TextBox><%=DateTime.Now %></div></ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnPart" runat="server" Text="局部刷新" OnClick="btnPart_Click" />
<asp:Button ID="btnPage" runat="server" Text="整页刷新" OnClick="btnPage_Click" />

(特定UpdatePanel刷新)方法A后台代码:

protected void Page_Load(object sender, EventArgs e)
{ScriptManager1.RegisterAsyncPostBackControl(this.btnPart);
}protected void btnPart_Click(object sender, EventArgs e)
{ddlCity.Items.Add(new ListItem("bonus", "6"));txtUserName.Text += "9";this.UpdatePanel1.Update();
}protected void btnPage_Click(object sender, EventArgs e)
{ddlCity.Items.Add(new ListItem("bonus", "6"));txtUserName.Text += "9";
}

注意,特定刷新UpdatePanel1时:
UpdatePanel1、UpdatePanel2的UpdateMode设为Conditional,可实现UpdatePanel1定向刷新;
UpdatePanel1、UpdatePanel2的UpdateMode设为Always,则所有的UpdatePanel都不能刷新;
UpdatePanel1的UpdateMode设为Conditional,UpdatePanel2的UpdateMode设为Always,则所有的UpdatePanel都刷新;
UpdatePanel1的UpdateMode设为Always,UpdatePanel2的UpdateMode设为Conditional,则所有的UpdatePanel都不能刷新;

方法B前台代码:
a.选中要进行局部更新的UpdatePanel控件
b.在属性页中点击Trigger(集合)属性右边的小按钮
c.在对话框中的成员列表中添加一个AsyncPostBackTriggers成员
d.指定AsyncPostBackTriggers成员的ControlID和EventName
e.所有UpdatePanel的UpdateMode都设为Conditional,否则四种情况的效果与上一示例相同
f.一个UpdatePanel上可以有多个触发器,实现在不同的情况下对该UpdatePanel控件内容地更新

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"><ContentTemplate><div>    <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="True"></asp:DropDownList><br />用户名:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox><%=DateTime.Now %></div></ContentTemplate><Triggers><asp:AsyncPostBackTrigger ControlID="btnPart" EventName="Click" /></Triggers>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"><ContentTemplate><div>    <asp:DropDownList ID="ddlCounty" runat="server" AutoPostBack="True"></asp:DropDownList><br />密码:<asp:TextBox ID="txtUserPwd" runat="server"></asp:TextBox><%=DateTime.Now %></div></ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnPart" runat="server" Text="局部刷新" OnClick="btnPart_Click" />
<asp:Button ID="btnPage" runat="server" Text="整页刷新" OnClick="btnPage_Click" />

方法B后台代码:

protected void btnPart_Click(object sender, EventArgs e)
{ddlCity.Items.Add(new ListItem("bonus", "6"));txtUserName.Text += "9";this.UpdatePanel1.Update();
}protected void btnPage_Click(object sender, EventArgs e)
{ddlCity.Items.Add(new ListItem("bonus", "6"));txtUserName.Text += "9";
}

三、实例三

两个UpdatePanel控件,其中一个UpdatePanel内部控件引发两个UpdatePanel控件同时刷新。
两个UpdatePanel的UpdateM必须是Always。
前台代码:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"><ContentTemplate><div>    <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="True"></asp:DropDownList><br />用户名:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox><%=DateTime.Now %><br /><asp:Button ID="btnPart" runat="server" Text="局部刷新" OnClick="btnPart_Click" /></div></ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Always"><ContentTemplate><div>    <asp:DropDownList ID="ddlCounty" runat="server" AutoPostBack="True"></asp:DropDownList><br />密码:<asp:TextBox ID="txtUserPwd" runat="server"></asp:TextBox><%=DateTime.Now %></div></ContentTemplate>
</asp:UpdatePanel>

后台代码:

protected void btnPart_Click(object sender, EventArgs e)
{ddlCity.Items.Add(new ListItem("bonus", "6"));txtUserName.Text += "9";
}

四、示例四

两个UpdatePanel控件,其中一个UpdatePanel内部控件引发当前UpdatePanel内部
其他控件刷新,而另一个UpdatePanel不刷新。
两个UpdatePanel的UpdateM必须是Conditional。
前台代码:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"><ContentTemplate><div>    <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="True"></asp:DropDownList><br />用户名:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox><%=DateTime.Now %><br /><asp:Button ID="btnPart" runat="server" Text="局部刷新" OnClick="btnPart_Click" /></div></ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"><ContentTemplate><div>    <asp:DropDownList ID="ddlCounty" runat="server" AutoPostBack="True"></asp:DropDownList><br />密码:<asp:TextBox ID="txtUserPwd" runat="server"></asp:TextBox><%=DateTime.Now %></div></ContentTemplate>
</asp:UpdatePanel>

后台代码:

protected void btnPart_Click(object sender, EventArgs e)
{ddlCity.Items.Add(new ListItem("bonus", "6"));txtUserName.Text += "9";
}

五、实例五

两个UpdatePanel控件,其中一个UpdatePanel1内部控件引发另一个UpdatePanel2控件刷新,但本身不刷新。
a.两个UpdatePanel的UpdateM必须是Conditional。
b.两个UpdatePanel的ChildrenAsTriggers必须是false
c.在UpdatePanel2中添加一个触发器,触发源为UpdatePanel1中btnPart的Click事件

前台代码:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"><ContentTemplate><div>    <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="True"></asp:DropDownList><br />用户名:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox><%=DateTime.Now %><br /><asp:Button ID="btnPart" runat="server" Text="局部刷新" OnClick="btnPart_Click" /></div></ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"><ContentTemplate><div>    <asp:DropDownList ID="ddlCounty" runat="server" AutoPostBack="True"></asp:DropDownList><br />密码:<asp:TextBox ID="txtUserPwd" runat="server"></asp:TextBox><%=DateTime.Now %></div></ContentTemplate><Triggers><asp:AsyncPostBackTrigger ControlID="btnPart" EventName="Click" /></Triggers>
</asp:UpdatePanel>

后台代码:

protected void btnPart_Click(object sender, EventArgs e)
{//ddlCity和txtUserName都是UpdatePanel1中的控件//虽然后台做了处理但是前台控件内容不会发生变化//因为btnPart的Click事件只能异步更新UpdatePanel2中的内容ddlCity.Items.Add(new ListItem("bonus", "6"));txtUserName.Text += "9";
}

六、UpdateProgress

属性:
DynamicLayout:隐藏时是否占位,默认值为true
DisplayAfter:延迟多少时间后显示,单位毫秒,默认值为500
AssociatedUpdatePanelID:关联的UpdatePanel的ID,默认为NULL

七、总结

UpdatePanel确实很有用,但是我们在使用过程中一定要注意它可能给我们带来的问题,例如:弹出框不显示等。使用的话确保UpdatePanel包含的内容都是自己需要更新的部分。
如果遇到了弹出框不显示的问题请参考:http://blog.csdn.net/xiaouncle/article/details/52290451

UpdatePanel的简单用法(非嵌套)相关推荐

  1. UpdatePanel的简单用法(1)

    局部更新是ajax技术的最基本,也是最重要的用法,今天大概把asp.net ajax中的局部更新控件 updatepanel的用法记录下,大家可以共同探讨UpdatePanel控制页面的局部更新,这个 ...

  2. slf4j的简单用法以及与log4j的区别

    From: https://www.cnblogs.com/qlqwjy/p/9275415.html 之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着 ...

  3. Windump网络命令的简单用法

    Windump网络命令的简单用法 大家都知道,unix系统下有个tcpdump的抓包工具,非常好用,是做troubleshooting的好帮手.其实在windows下也有一个类似的工作,叫windum ...

  4. GlobalPointer:用统一的方式处理嵌套和非嵌套NER

    ©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 本文将介绍一个称为 GlobalPointer 的设计,它利用全局归一化的思路来进行命名实体识别(NER) ...

  5. php rmdir 返回值,php通过rmdir删除目录的简单用法

    php通过rmdir删除目录的简单用法 本文实例讲述了php通过rmdir删除目录的简单用法.分享给大家供大家参考.具体分析如下: php可以通过rmdir()函数删除服务器上的目录,下面代码里用到了 ...

  6. NSCharacterSet 简单用法

    NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...

  7. (小甲鱼python)集合笔记合集一 集合(上)总结 集合的简单用法 集合的各种方法合集:子、交、并、补、差、对称差集、超集

    一.基础复习 集合与字典区别 集合中所有元素都是独一无二的,并且也是无序的. 集合具有唯一性.无序性.有限性 >>> type({}) #字典 <class 'dict'> ...

  8. (P9)awk:什么是awk,awk简单用法,awk脚本语法,awk执行过程

    文章目录 1.什么是awk 2.awk简单用法 3.awk脚本语法 4.awk执行过程 1.什么是awk awk 是什么 awk 是一种用于处理数据和生成报告的编程语言 awk 可以在命令行中进行一些 ...

  9. 关于书籍“Composing Programs”1.6.3自定义函数的嵌套定义与非嵌套定义的比较

    最近开始刷ucb的cs61-2018年课程,配套书籍是John DeNero的"Composing Programs".书中1.6.3部分讲到user defined functi ...

最新文章

  1. R语言使用randomForest包构建随机森林模型的步骤和流程、随机森林算法包括抽样样本(观察)和变量来创建大量的决策树(多个树,构成了森林,而且通过样本抽样和变量抽样,让多个树尽量不同)
  2. 设计模式第七讲-责任链模式
  3. 应用Mongoose开发MongoDB(2)模型(models)
  4. 完善Library的管理方式
  5. 如何用FineReport制作一张报表(一)
  6. android应用程序的生命周期,Android应用程序的生命周期.doc
  7. Azkaban 进程和任务监控(任务状态从MySQL同步到SqlServer)
  8. 《Android开发从零开始》课程下载地址汇总
  9. Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python
  10. catalina java opts_CATALINA_OPTS与JAVA_OPTS – 有什么区别?
  11. 如何使用Yii2编程:Google身份验证
  12. WSTMart商城系统数据字典
  13. 中考计算机易错知识点,【中考备考】易错知识点归类
  14. MCE公司:黄芩苷通过激活肝脏 CPT1 酶改善饮食诱导的肥胖和脂肪肝病变
  15. html指定区域的背景颜色,JS实现点击颜色块切换指定区域背景颜色的方法
  16. 记录一个获取颜色RGB值的小技巧
  17. node-sass和sass-loader安装报错
  18. Win32如何定义IP数据报的首部
  19. 2017年衢州联赛 T2
  20. 对象存储Minio 客户端工具类,实现文件上传、图像压缩、图像添加水印

热门文章

  1. 虫洞协议背后的BCH“自我”之路
  2. ENVI中TIF格式文件打不开
  3. 坑爹的原道N90 高清视频解码
  4. numpy meshgrid顺序问题
  5. css3 3d perspective,CSS 3D transforms系列教程-Perspective
  6. 机器学习之AUC、AUPRC、F1等评价指标的含义
  7. JavaScript终极面试题:null == undefined、[]+{}、{}+{}等结果多少呢?看完遍打通了奇经八脉任何对象的运算都会了
  8. 斥资16亿,湖北襄阳华侨城奇幻度假区“奇妙镇”正式迎客
  9. 删除电脑分区之后有一部分分区属于未分配的状态,怎么把这一部分给分到D盘里面去?
  10. Hive数据的导入导出和查询方式