2013-01-16 49 views
0

在UpdatePanel中,我有很多複選框,我需要將其'AutoPostback'設置爲「true」。如何在UpdatePanel上禁用自動刷新?

問題:

假設我有100個複選框在面板和我滴答#50 checbox則控制自動轉到頁的頂部,我不得不再次回落到勾選另一個複選框(比方說#60)。

這真的很煩人的用戶,我被要求停止這種自動滾動,使他們可以留在同一個地方,並勾選另一個複選框。我怎樣才能阻止我的網頁每次都處於頂峯?

有什麼辦法可以禁用這種行爲嗎?我猜UpdatePanel可能是問題..如果是這樣,我該如何禁用自動引用?

+0

你需要把複選框中的UpdatePanel?也許你可以將它們留在它之外,但將它們註冊爲AsyncTriggers。 – Malk

回答

0

要麼停止使用UpdatePanel,要麼將UpdateMode設置爲有條件的

如果的UpdateMode屬性設置爲條件,UpdatePanel控件的內容更新時,下列條件之一爲真:

  • 當回發一個觸發該UpdatePanel控件
  • 引起
  • 當您顯式調用UpdatePanel控件的更新方法
  • 當UpdatePanel控件嵌套在另一個UpdatePanel 控件中並且父面板爲upd如果ChildrenAsTriggers屬性設置爲true,並且UpdatePanel控件的任何子控件都會導致回發。子控件 嵌套的UpdatePanel控件不會導致更新到外部的 UpdatePanel控件,除非它們明確定義爲父面板的觸發器 。
+0

托馬斯,我已經將UpdateMode屬性設置爲'有條件的',但是這也不起作用。對於'AutoPostBack',updatepanel內的複選框設置爲「true」。這是爲頁面創建問題嗎? – AtitStack

0

有沒有內置的方式來做到這一點。你將不得不寫一些JavaScript功能來實現這一點:

有一個隱藏的領域可以說「hfScrollvalue」(保存和重置滾動位置)

  • 寫JS方法「調用getScrollPosition」,以獲得面板的滾動位置,並保存在你的隱藏字段

  • 寫JS方法「SetScrollPosition」擺脫隱藏字段滾動位置,並將其設置回面板

  • 你然後可以調用SetScrollPosition方法,當您的請求通過爲此添加處理程序結束時

  • 請求結束後,滾動位置再次由更新面板設置。所以你可以稍微延遲一下設置你的值到面板滾動位置。你可以通過使用Javascript的setTimeout方法來做到這一點。所以通過這個延誤您保存的位置將被面板上的AJAX處理完成

    function GetScrollPosition() { 
        document.getElementById('<%= hfScrollvalue.ClientID %>').value = document.getElementById('<%= Panel1.ClientID %>').scrollTop; 
    

    }

    功能SetScrollPosition()後置{

     document.getElementById('<%= Panel1.ClientID %>').scrollTop = document.getElementById('<%= hfScrollvalue.ClientID %>').value; 
        } 
    } 
    
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest); 
    
    function EndRequest(sender, args) { 
    
        setTimeout('SetScrollPosition()', 60); 
    } 
    

    如果您正在使用一個TextBox工作,也就是在一個UpdatePanel裏面,也是綁定到一個Timer,那麼你可以這樣:

    Sys.Application.add_init(DownloadInit); 
    
    function DownloadInit(sender) { 
    
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest); 
    
    } 
    
    function SetScrollPosition() { 
    
        var textArea = document.getElementById('<%=TextBox1.ClientID%>'); 
    
        textArea.scrollTop = textArea.scrollHeight; 
    
    } 
    
    function EndRequest(sender, args) { 
    
        SetScrollPosition(); 
    
    } 
    
0

下方加入您的頁面指令

MaintainScrollPositionOnPostback =「真」

+0

這不能回答這個問題。 – dario