在asp.net中使用Ajax Timer Control时如何不关注

时间:2009-09-08 02:20:50

标签: asp.net asp.net-ajax

当我使用ajax控件但每1秒控制一次滴答时,当我点击其他控件时控件不会集中在选择我的控件时计时器滴答

2 个答案:

答案 0 :(得分:0)

必须将特定计时器放在更新面板内。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
  <ContentTemplate>
   <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
   <asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick">
   </asp:Timer>
  </ContentTemplate>
</asp:UpdatePanel>

答案 1 :(得分:0)

这是另一种方法:

http://mattberseth.com/blog/2008/05/bug_bash_enablingdisabling_the.html

这就是我接近它的方式(请注意,Timer1的服务器端标签和“txtSymbol”文本框的处理方式不同):

<asp:Content ID="HeadContent" runat="server" ContentPlaceHolderID="HeadContent">
    <link rel="stylesheet" type="text/css" href="/Website1/Styles/lessantique.css" />
    <script type="text/javascript">
        function pageLoad(sender, args){
            //  fetch the timer components
            var timer = $find('<%= this.Timer1.ClientID %>');

            //  fetch the INPUT element
            var textbox = $get('Content1_txtSymbol');
            $addHandler(textbox, 'focus', Function.createDelegate(this, function(){
                //   disable the Timer so we don't refresh the page
                //   while the user is entering the data
                timer._update(false, timer.get_interval()); 
            }));
            $addHandler(textbox, 'blur', Function.createDelegate(this, function(){
            //   re-enable the Timer
            timer._update(true, timer.get_interval()); 
            }));                
        } 
    </script>
</asp:Content>

关于上一个响应中列出的计时器的服务器端代码,这种方法对我来说不起作用,因为我有多个更新面板,其中文本框不在使用计时器的同一面板中。在那种情况下,我按照http://forums.asp.net/t/1632054.aspx/1的建议,在那里实施了一个新的小组:

<asp:UpdatePanel runat="server" ID="UpdatePanel3" UpdateMode="Conditional" ChildrenAsTriggers="false" >
  <ContentTemplate>
    <asp:Timer runat="server" id="Timer1" Enabled="true"  
       Interval="2000" OnTick="Timer1_Tick" />
   </ContentTemplate>            
</asp:UpdatePanel>

尽管上面没有产生错误,结果仍然不能令人满意,因此客户端方法。