Ajax计时器,更新面板和中继器

时间:2013-02-28 14:11:34

标签: asp.net ajax timer updatepanel repeater

我在使用中继器的页面上使用计时器时遇到问题。
我的页面基本上是这样的:(没有写下所有的标签和其他非重要的东西,页面很大)

<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来构建我的转发器。但我没有线索如何做到这一点。谁能解释一下?

2 个答案:

答案 0 :(得分:1)

在绑定Repeater集UpdatePanel1.update();

之后,将 UpdateMode =“条件”属性添加到UpdatePanel和OnTick事件中

 

 


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(); }