我在使用中继器的页面上使用计时器时遇到问题。
我的页面基本上是这样的:(没有写下所有的标签和其他非重要的东西,页面很大)
<asp:Timer runat="server" Interval="5000" OnTick="UpdateTimer_Tick" ID="UpdateTimer" />
<UpdatePanel 1>
<dropdownlist/>
<Panel 1>
<TextBox/><Button/>
</Panel 1>
<Repeater 1> //Bound to a list in code behind
<Checkbox/><textbox/>
</Repeater 1>
<Button/>
<Repeater 2> //Bound to a list in code behind
<button/><button/>
</Repeater 2>
<Repeater 3> //Bound to a dataset in code behind
<textbox/><button/><button/>
</Repeater 3>
<button/><button/><button/>
</UpdatePanel 1>
<panel 2>
//Jscript stuff that doesn't change anything to my current problem.
</panel 2>
<UpdatePanel 2>
<Image/>
</UpdatePanel 2>
在我的页面中,我正在尝试添加一个5000毫秒的计时器。 OnTick事件需要调用我的BindRepeater2方法,因为我只想重新加载转发器以显示更新的信息。 我尝试将计时器放在updatePanel之前,在面板1中的内部,之后,面板2中,在中继器中。我尝试为每个中继器设置多个updatePanel,我尝试将面板放在任何地方......我得到的最好结果是我在面板1中的textBox没有丢失其中的信息。 UpdatePanel2中的图像总是消失(因为我在pageLoad上绑定一次,如果没有回发)并且repeater1中的文本框总是重置自己。最重要的是,当我浏览我的下拉列表时,OnTick事件会忽略我的文本框并左键单击。
我不知道如何解决这个问题。
编辑:我发现我可以使用ajax来构建我的转发器。但我没有线索如何做到这一点。谁能解释一下?
答案 0 :(得分:1)
在绑定Repeater集UpdatePanel1.update();
OnTick活动
protected void Timer1_Tick(object sender, EventArgs e)
{
BindRepeater();
UpdatePanel1.update();
}
答案 1 :(得分:0)
在我的页面上调整后,我最终得到了这个。
<asp:Timer runat="server" Interval="5000" OnTick="UpdateTimer_Tick" ID="UpdateTimer" />
<UpdatePanel1 UpdateMode="Conditional">
<dropdownlist/>
<Panel 1>
<TextBox/><Button/>
</Panel 1>
<Repeater 1> //Bound to a list in code behind
<Checkbox/><textbox/>
</Repeater 1>
<Button/>
</UpdatePanel1>
<UpdatePanel2 UpdateMode="Conditional">
<Repeater 2> //Bound to a list in code behind
<button/><button/>
</Repeater 2>
</UpdatePanel2>
<UpdatePanel3 UpdateMode="Conditional">
<Repeater 3> //Bound to a dataset in code behind
<textbox/><button/><button/>
</Repeater 3>
<button/><button/><button/>
</UpdatePanel3>
<UpdatePanel4 UpdateMode="Conditional">
<panel 2>
//Stuff
</panel 2>
<Image/>
</UpdatePanel4>
在代码中使用
protected void Timer1_Tick(object sender, EventArgs e)
{ BindRepeater(); UpdatePanel2.Update(); }