2012-10-17 82 views
3

这是我的脚本:固定后刷新的UpdatePanel间隔

<script type="text/javascript"> 
    $(document).ready(
    function(){ 

     setTimeout('myFun()', 10000); 
    }); 

    function myFun() { 
     var btn = document.getElementById('<%=myBtn.ClientID %>'); 
     alert(btn); 
     btn.click(); 
    } 
</script> 

我的标记:

<asp:UpdatePanel ID="upMain" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:Label ID="lblValue" runat="server" Text=""></asp:Label> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="myBtn" EventName="Click" /> 
    </Triggers> 
</asp:UpdatePanel> 
<asp:Button ID="myBtn" runat="server" Text="hit" /> 

代码背后:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     lblValue.Text = "0"; 
    } 
    else 
    { 
     lblValue.Text = Convert.ToString(Convert.ToInt32(lblValue.Text) + 1); 
    } 
} 

我需要每10秒后刷新的UpdatePanel 。但是在页面加载后,只有我能够实现这一点。有什么我失踪?谢谢。

+0

试试使用的setInterval(),而不是 – zetsin

回答

0

为什么不使用AJAX计时器控件。它将以一种整洁,简洁的有效方式达到相同的目的。

反正, setTimeout()& setInterval()以相同的方式工作。

的关键区别在于:

  • 的setTimeout将等待指定的时间段,运行我们给它的代码,然后停止。另一方面,将等待,运行代码 - 然后再次等待并再次运行代码 - 永久重复(或直到我们告诉它停止)。

简言之,setTimeout的()运行在提供的代码中指定的时间间隔后只有一次,而的setInterval()再次指定时间间隔后再次运行的代码&。

所以使用:

<script type="text/javascript">  
$(document).ready( 
    function() 
    {   
      setInterval('myFun()', 10000);  
    }); 
    function myFun() 
    {   
      var btn = document.getElementById('<%=myBtn.ClientID %>');   
      alert(btn); 
      btn.click();  
    } 
</script> 

来源:jQuery的 - 新手忍者

0

删除if (!IsPostBack),正因为如此,它只有一次更新,

+1

是否有另一种方式?因为这仅仅是一个例子。在我的实际代码中,我不想浏览每个页面上的所有代码。这是沉重的代码。 – mike44

0

的IsPostBack意味着该页面后回到自己

!的IsPostBack是指第一次加载的只是刷新页面的页面,它不是从本身发布

0

你为什么不尝试AJAX定时器控制?这是在某个固定时间间隔内回发的简单方法。

0

尝试

__dopostback('<%=myBtn.UniqueID%>',0); 

insted的点击

var btn = document.getElementById('<%=myBtn.ClientID %>');   
      btn.click();