当我使用ajax控件但每1秒控制一次滴答时,当我点击其他控件时控件不会集中在选择我的控件时计时器滴答
答案 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>
尽管上面没有产生错误,结果仍然不能令人满意,因此客户端方法。