自强不息,止于至善

身无半文,心忧天下;手释万卷,神交古人
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

反色显示新更新的UpdatePanel

Posted on 2007-10-27 20:14  L.Zhang  阅读(176)  评论(0)    收藏  举报

//用户控件RandomRefreshControl.ascx的代码

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    
<ContentTemplate>
        
<%= DateTime.Now %>
    
</ContentTemplate>
</asp:UpdatePanel>

//用户控件后台代码RandomRefreshControl.ascx.cs
public partial class RandomRefreshControl : System.Web.UI.UserControl
{
    
private static Random random = new Random(DateTime.Now.Millisecond);

    
protected void Page_Load(object sender, EventArgs e)
    {
        
if (random.NextDouble() > 0.5)
        {
            
this.UpdatePanel1.Update();
        }
    }
}

//主程序前台文件
<%@ Register Src="RandomRefreshControl.ascx" TagName="RandomRefreshControl" TagPrefix="uc1" %>
<uc1:RandomRefreshControl id="RandomRefreshControl1" runat="server" />
<br />
<uc1:RandomRefreshControl id="RandomRefreshControl2" runat="server" />
<br />
<uc1:RandomRefreshControl id="RandomRefreshControl3" runat="server" />
<br />
<uc1:RandomRefreshControl id="RandomRefreshControl4" runat="server" />
<br />
<uc1:RandomRefreshControl id="RandomRefreshControl5" runat="server" />
<br />

<asp:Button ID="Button1" runat="server" Text="Button" />

<script language="javascript" type="text/javascript">
    
function highlightPanels(panels, clear)
    {
        
for (var i = 0; i < panels.length; i++)
        {
            
var panel = panels[i];
            panel.style.border 
= clear ? "solid 0px white" : "solid 2px red";
            panel.style.backgroundColor 
= clear ? "white" : "#d6dde8";
        }
    }
    
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(
        
function(sender, e)
        {
            
var panelsUpdating = Array.clone(e.get_panelsUpdating());
            highlightPanels(panelsUpdating);
            
            window.setTimeout(
                
function(){ highlightPanels(panelsUpdating, true); },
                
2000);
        });
</script>
//主文件后台代码节选
    protected void Page_Load(object sender, EventArgs e)
    {
        ScriptManager.GetCurrent(
this).RegisterAsyncPostBackControl(this.Button1);
    }