簡體   English   中英

在ASP.NET中的div中維護asp:table滾動位置

[英]Maintaining asp:table Scroll Position inside a div in ASP.NET

我在div內有一個asp:Table。 如何在每次回發中保持其滾動位置?

<div style="overflow: visible">
    <asp:Table ID="ReportBody" runat="server" EnableViewState="False" CellSpacing="0">
    </asp:Table>
</div>

我在Page指令中嘗試過MaintenanceScrollPositionOnPostback = true,但無濟於事。 我還在PageLoad中嘗試了Page.MaintainScrollPositionOnPostback = true,但沒有用。 我還嘗試了來自Stackoverflow的一堆JS腳本,但沒有任何效果。

謝謝。

具體來說,要回答這個問題有點困難,因為我對所提供的內容沒有太多的了解,但是作為一個廣泛的猜測,我會說我將結合使用jQuery和ASP.NET -使用jQuery來跟蹤滾動,將其寫入.NET輸入隱藏字段,然后在頁面重新加載時重新應用它。

您可能需要調整它以適合實際文檔的需求,但是我正在考慮遵循這些思路。 (注意:如果要在頁面中滾動而不是在特定的div中滾動,請參閱此答案末尾的注釋。)

首先,對於主要div,我假設您有以下內容:

<div id="container" style="overflow-y:auto;">

...以便div的內容可以垂直滾動。 使用該假設,下一個添加項將是頁面內的隱藏字段:

<asp:HiddenField ID="tScroll" runat="server" value="0" />

頁面首次加載時的默認值是0。 最后,無論何時重新加載頁面並觸發文檔准備步驟,您都使用jQuery跟蹤滾動位置並重新應用跟蹤的滾動位置:

$(document).ready(function() {
    $("#container").scrollTop($("#tScroll").val()); // this sets the scroll position
    $("#container").scroll(function() {
        $("#tScroll").val($(this).scrollTop());
    });
});

但是,如果在頁面加載時div和表可見 ,則div最初會顯示在其正常位置,然后會跳到滾動位置,這會導致瞬間跳動。 相反,您可以使用jQuery animate函數執行平滑的向后滾動,並將該行替換為:

$("#container").animate({ scrollTop: $("#tScroll").val() + 'px' }, 500);

...根據需要將500調整為更大或更小。 這樣,div將自身滾動回到所需位置。

我不能說這是否完全適合您的需求,但希望它至少可以為您指明正確的方向。

附錄:如果要維護頁面滾動而不是特定div中的滾動,邏輯是相同的,但是您將跟蹤並引用幾個不同的值,基本上如下:

$('html,body').animate({ scrollTop: $("#tScroll").val() }, 500);
$(window).scroll(function(e) { 
    ...

...其余腳本保持在同一行。 在兩種情況下,您都可以選擇使用動畫還是直接使用scrollTop分配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM