【转】UpdatePanel控件的简单属性

转自:http://www.cnblogs.com/chx197/archive/2008/11/09/1329934.html

一、RenderMode属性,值为Block(默认值)为Inline
 在页面中输入以下代码:

 

<asp:ScriptManager ID="ScriptManager1" runat="server">
        
</asp:ScriptManager>
        
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block">   
             
<ContentTemplate>
                RenderMode
=Block
             
</ContentTemplate>
        
</asp:UpdatePanel>
        
<hr />
        
<asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Inline">
            
<ContentTemplate>
                RenderMode
=Inline
            
</ContentTemplate>
        
</asp:UpdatePanel> 

运行后查看网页源代码,会发现以下HTML标记:

 


<div id="UpdatePanel1">
                RenderMode
=Block
 
</div>
        
<hr />
        
<span id="UpdatePanel2">
                RenderMode
=Inline
        
</span>

 这就是这两个值的区别,为Block时输出的容器为<div>,而为Inline时则输出<span>。

二、UpdateMode属性,值为Always(默认值)或Conditional
 作用分别为Always:只要页面有异步回送则该UpdatePanel更新
 Conditional:只有该UpdatePanel控件中的控件产生的异步回送,才更新该UpdatePanel
 在页面输入以下代码:
 
 
<asp:ScriptManager ID="ScriptManager1" runat="server">
        
</asp:ScriptManager>
        
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block" UpdateMode="Always">   
             
<ContentTemplate>
                
<%=DateTime.Now %>
                 
<asp:Button ID="Button1" runat="server" Text="点击该按钮只有上面时间更新" />
             
</ContentTemplate>
        
</asp:UpdatePanel>
        
<hr />
        
<asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Block" UpdateMode="Conditional">   
             
<ContentTemplate>
                
<%=DateTime.Now %>
                 
<asp:Button ID="Button2" runat="server" Text="点击该按钮全部时间都会更新" />
             
</ContentTemplate>
        
</asp:UpdatePanel> 
运行后就会发现按钮文本所写的效果。

三、ChildrenAsTriggers属性,值为True(默认值)为False
 在页面输入以下代码:

 
<asp:ScriptManager ID="ScriptManager1" runat="server">
        
</asp:ScriptManager>
        
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block" UpdateMode="Always" ChildrenAsTriggers="true">    
             
<ContentTemplate>
                
<%=DateTime.Now %>
             
</ContentTemplate>
        
</asp:UpdatePanel>
        
<hr />
        
<asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Block" UpdateMode="Conditional" ChildrenAsTriggers="false">   
             
<ContentTemplate>
                
<%=DateTime.Now %>
                 
<asp:Button ID="Button2" runat="server" Text="点击该按钮只有上方的时间会更新" />
             
</ContentTemplate>
        
</asp:UpdatePanel> 
运行结果如按钮文本所写,他的作用是任何异步回送都不会引发该UpdatePanel更新(单独指定的除外)。
 注意:如果ChildrenAsTriggers的值为False,则UpdateMode的值也应该为Conditional,否则会引发异常,这时他不知道是该更新还是不更新。 

四、Triggers属性,这其实是UpdatePanel的一个子节点,作用是为UpdatePanel指定一个控件,由该控件引发UpdatePanel更新
 在页面输入以下代码:

 

<asp:ScriptManager ID="ScriptManager1" runat="server">
        
</asp:ScriptManager>
        
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block"  ChildrenAsTriggers="true" UpdateMode="Conditional">    
             
<ContentTemplate>
                
<%=DateTime.Now %>
             
</ContentTemplate>
             
<Triggers>
                
<asp:AsyncPostBackTrigger ControlID="Button1" />
             
</Triggers>
        
</asp:UpdatePanel><hr />

        <asp:Button ID="Button1" runat="server" Text="该按钮在UpdatePanel外,但为Triggers所指定,也会引发UpdatePanel更新" />
 由于UpdatePanel1的UpdateMode属性为Conditional,所以只有当里面 的控件引发回送时也会更新,但是Triggers节点指定了一个外部的Button控件,由该控件一样会引发UpdatePanel的更新。有意思的是被 指定的Button按钮会变成一个异步控件,也就是说如果你还双击该按钮在CS文件中添加了一个Button_Click事件的话,会报出一个脚本错误!

 在<asp:AsyncPostBackTrigger ControlID="Button1" />中还有一个属性“EventName”,该属性指定了一个事件名称,作用为只有当ControlID指定的控件的EventName指定的事件 才会引发更新。

 在页面输入以下代码:

 
<asp:ScriptManager ID="ScriptManager1" runat="server">
        
</asp:ScriptManager>
        
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block"  ChildrenAsTriggers="false" UpdateMode="Conditional">    
             
<ContentTemplate>
                
<%=DateTime.Now %>
                 
<asp:Button ID="Button1" runat="server" Text="不会刷新" />
                 
<asp:Button ID="Button2" runat="server" Text="不会刷新" />
             
</ContentTemplate>
        
</asp:UpdatePanel>
 
 如第三个属性所说:这里把UpdatePanel的ChildrerAsTriggers属性设置为False,则任何控件引发的回送都不会引发该UpdatePanel更新。
 但是把代码修改如下:
 
 
<asp:ScriptManager ID="ScriptManager1" runat="server">
        
</asp:ScriptManager>
        
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block"  ChildrenAsTriggers="false" UpdateMode="Conditional">    
             
<ContentTemplate>
                
<%=DateTime.Now %>
                 
<asp:Button ID="Button1" runat="server" Text="因为是Triggers指定的控件,所以会引发更新" />
                 
<asp:Button ID="Button2" runat="server" Text="不会刷新" />
             
</ContentTemplate>
             
<Triggers>
                
<asp:AsyncPostBackTrigger ControlID="Button1" />
             
</Triggers>
        
</asp:UpdatePanel> 
其实就是为UpdatePanel添加了一个<Triggers>节点,指向Button1。则运行结果按钮文本所示。
 事实上Triggers可以指定UpdatePanel外的控件,也可以指定一个在其他UpdatePanel内的控件,或者在GridView中的一个控件。
posted on 2011-05-24 12:02  bluecoffee  阅读(317)  评论(0编辑  收藏  举报