2013-02-28 76 views
0

我正面臨使用中繼器頁面上使用定時器的問題。
我的頁面基本上是這樣的:(沒記下所有的標籤和非重要的東西,該頁面是相當大的)阿賈克斯計時器,更新面板和中繼器

<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中不丟失其中的信息。 UpdatePanel2中的圖像總是消失(因爲我在pageLoad上綁定一次,如果不是回發的話),而repeater1中的文本框總是重置它們自己。最重要的是,當我瀏覽我的下拉列表時,OnTick事件會將焦點放在我的文本框上,並會左鍵單擊。

我不知道如何解決這個問題。

編輯:我發現我可以使用ajax來構建我的中繼器。但我沒有線索怎麼做。任何人都可以解釋我?

回答

1

添加的UpdateMode = 「條件」屬性爲您的UpdatePanel和OnTick事件綁定你的中繼設置UpdatePanel1.update();


OnTick事件

protected void Timer1_Tick(object sender, EventArgs e) 
    { 
     BindRepeater(); 
     UpdatePanel1.update(); 
    } 
+0

同一仍然發生。我的圖像消失了,文本框內容鬆散,焦點鬆動。 – snaplemouton 2013-02-28 15:20:36

+0

我調整了一下我的代碼,現在它可以工作。謝謝 – snaplemouton 2013-02-28 17:00:18

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