UpdatePanel 的 UpdateMode 和 ChildrenAsTriggers(较好的总结了前面几篇博客的内容)

一个 Button 位于 UpdatePanel1 中,一个 Label 位于 UpdatePanel2 中,那么,Button 是否可以通过异步回送来更新 Label 呢?默认是可以的。


UpdateMode 可选值:Always(默认)、Conditional。

ChildrenAsTriggers 可选值:True(默认)、False。


说明,以下总结是除开了 AsyncPostBackTriggerPostBackTrigger 的情况。

假设某 UpdatePanel 的 ID 为 up1,其属性分别为:

UpdateMode="Always" ChildrenAsTriggers="True"

  • up1 内部控件对 up1 内部控件实现异步回送。
  • 其它 UpdatePanel 内部控件对 up1 内部控件实现异步回送。
  • UpdatePanel 之外的控件不可对 up1 内部控件实现异步回送。

UpdateMode="Always" ChildrenAsTriggers="False"

  • 不允许这种设置。

UpdateMode="Conditional" ChildrenAsTriggers="True"

  • up1 内部控件对 up1 内部控件实现异步回送。
  • 其它 UpdatePanel 内部控件不可对 up1 内部控件实现异步回送。
  • UpdatePanel 之外的控件不可对 up1 内部控件实现异步回送。

UpdateMode="Conditional" ChildrenAsTriggers="False"

  • up1 内部控件不可对 up1 内部控件实现异步回送。
  • 其它 UpdatePanel 内部控件不可对 up1 内部控件实现异步回送。
  • UpdatePanel 之外的控件不可对 up1 内部控件实现异步回送。

 <asp:UpdatePanel>标签内只有<ContentTemplate>  <Triggers>两个标签

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <Triggers>
            </Triggers>
            <ContentTemplate>
            </ContentTemplate>
        </asp:UpdatePanel>

 <Triggers>标签指的是刷新UpdatePanel的是位于UpdatePanel外面的触发UpdatePanel刷新的控件,当然当碰到下面的ChildrenAsTriggers="false" UpdateMode="Conditional" 情况,<trigger>标签内标注的触发控件依然有效

 

ChildrenAsTriggers用来表明UpdatePanel里面的提交控件是否用来刷新

  <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
            <ContentTemplate>
                <%= DateTime.Now %>
                <asp:Button ID="Button1" runat="server" Text="Button" />
                <asp:Button ID="Button2" runat="server" Text="Button" />
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" />
            </Triggers>
        </asp:UpdatePanel>

这样的指定Triggers的指定是有效的,

如果ChildrenAsTriggers为True,UpdateMode为Always那么,Triggers的指定是完全不必要的

 

 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">时,UpdatePanel1中可回发控件(包括各类button以及可进行postback的控件),可引起局部刷新

 

 

Triggers标签可以指定不在UpdatePanel里面的回发控件和在另一个UpdatePanel的回发控件来触发回发

<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers=false UpdateMode="Conditional">
            <ContentTemplate>
                <%= DateTime.Now %>
                <asp:Button ID="Button1" runat="server" Text="Button1" />
            </ContentTemplate>
            <Triggers>
                <asp:PostBackTrigger ControlID="Button2" />
            </Triggers>
        </asp:UpdatePanel>
   
        <asp:UpdatePanel ID="UpdatePanel2" runat="server">
            <ContentTemplate>
                <%= DateTime.Now %>
                <asp:Button ID="Button2" runat="server" Text="Button2" />
            </ContentTemplate>
        </asp:UpdatePanel>上面这段代码中,UpdatePanel1中的Button1会触发UpdatePanel2中的时间,因为没有指定UpdatePanel的UpdateMode为Conditional并且ChildrenAsTriggers为False

 

下面的内容待检验

2、UpdateMode属性和ChildrenAsTriggers属性:ChildrenAsTriggers默认为true。这两个属性其实是连起来使用的。假设有两个UPdatePanel,其中一个ChildrenAsTriggers为true,UpdateMode为Conditional时,这个UpdatePanel的更新会导致另外一个UpdatePanel的更新。如果ChildrenAsTriggers为false,UpdateMode为Conditional时,这个UpdatePanel的Content的内容不会更新,另一个UpdatePanel里的内容会更新。UpdateMode值为Always时,ChildrenAsTrigger不能为false,如果为true,它只更新自己内部的Content

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/firewolffeng/archive/2007/11/30/1908189.aspx



 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值