首先要明确两个概念:刷新和回送。这两个概念其实是不同的,不能够混成一个概念。
UpdateMode属性只是定义了UpdatePanel的更新模式。通常是Always或Conditional两个值。但是它会牵扯出关于UpdatePanel更深的知识。一般情况下,都是建议把此值设为Condition。这样该UpdatePanel控件只有满足以下条件时才会更新:
1)该UpdatePanel控件的一个子控件调用了一个回送。但ChildrenAsTriggers设为False时,该控件回送但不更新。
2)调用了一个注册触发器。如:一个不在UpdatePanel内的控件的Click事件。
3)调用了该控件的Update方法。
如果一个UpdatePanel的属性ChildrenAsTriggers设为False的话,就要用Update方法来更新了。在手工调用Update方法不仅可以更新本身控件,还可以更新其他控件(UpdateMode也是Conditional)即调用其他UpdatePanel的Update()。
触发器:
AsyncPostBackTrigger---为相关联的UpdatePanel及表单上所有UpdateMode为Always的UpdatePanel控件。
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
添加一个异步触发器,控件ID为Buttion1的按钮,通过Click事件触发。
PostBackTrigger----对页面调用一个传统的回送。
在UpdatePanel的高级应用时会用到重复和嵌套,这时UpdateMode必须都为Conditional。
除了UpdateMode属性外,还有一个RenderMode属性,这个属性主要就是设置UpdatePanel的内容是包在一个Div中还是一个Span中。
我这里做了一个尝试,在updatePanel以外的控件,如果updatePanel的ChildrenAsTriggers设为False时,则不会异步刷新,
但是其他updatePanel的控件也可以让updatePanel异步刷新。