2012-10-03 10 views
5

Desidero mantenere la posizione di scorrimento di RadPanelBar. Il mio RadPanelBar viene inserito in una pagina che si trova in aggiornamento automatico. Quando faccio scorrere la barra verso il basso di RadPanelBar, si va verso l'alto all'aggiornamento della pagina. Non dovrebbe. Sto cercando di gestirlo con il seguente codice ma non funziona. Mi sto perdendo qualcosa?Aggiornamento automatico della pagina RadPanelBar continua a scorrere

Ecco il mio JavaScript

<script type="text/javascript"> 
function SetScrollPositionOnlineContacts() { 

    //var pane = splitter.GetPaneById("RadPanelBarRoster"); 
    //document.getElementById("RadPanelBarRoster").scrollTop; 

    var splitter =$find("RadSplitterBottomParent"); 
    var intY = splitter.GetPaneById("RadPanelBarRoster").scrollTop; 

    var date = new Date(); 
    date.setTime(date.getTime() + (1 * 60 * 60 * 1000)); 
    var expires = "; expires=" + date.toGMTString(); 
    document.cookie = "cookieDivOnlineContacts" 
         + "=" 
         + intY 
         + expires + "; path=/"; 
    //document.title = intY; 
} 

function readCookieOnlineContacts(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for (var i = 0; i < ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') c = c.substring(1, c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 
    } 
    return null; 
} 
    </script> 

e questo è il mio codice HTML:

<telerik:RadSplitter ID="RadSplitterBottomParent" runat="server" Height="100%" 
    Width="100%" Orientation="Vertical" BackColor="#ECECFF" Skin="WebBlue" 
    LiveResize="True" SplitBarsSize="" HeightOffset="124" Visible="true" 
    BorderSize="0" PanesBorderSize="0"> 

    <!-- Start Left Roster Panel --> 
    <telerik:RadPane ID="RadPaneRoster" runat="server" Width="220px" 
     Scrolling="None"> 
     <telerik:RadContextMenu ID="RadContextMenuRoster" runat="server" 
      OnClientItemClicked="onRosterContextMenuClick" 
      EnableShadows="True"> 
      <Items> 
       <telerik:RadMenuItem runat="server" Text="View 
        Conversation"> 
       </telerik:RadMenuItem> 
       <telerik:RadMenuItem runat="server" Text="View Properties"> 
       </telerik:RadMenuItem> 
       <telerik:RadMenuItem runat="server" Text="Add to Favourites" 
        Enabled="False"> 
       </telerik:RadMenuItem> 
      </Items> 
     </telerik:RadContextMenu> 
     <telerik:RadPanelBar ID="RadPanelBarRoster" runat="server" 
      Skin="Metro" 
      Width="100%" onscroll="SetScrollPositionOnlineContacts()" 
      Height="3000px" OnClientItemClicked="onRosterClick" 
      OnClientContextMenu="onRosterContextMenu" 
      PersistStateInCookie="True" Style="width: 100%; border-top: 0; 
      border-bottom: 0; 
      z-index: 2" ExpandMode="FullExpandedItem" EnableViewState="True" 
      ViewStateMode="Inherit" 
      OnItemClick="RadPanelBarRoster_ItemClick"> 
     </telerik:RadPanelBar> 
    </telerik:RadPane> 
</telerik:RadSplitter> 

Ecco il mio codice dietro la pagina:

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
    { 
     StringBuilder sbScript = new StringBuilder(); 
     sbScript.Append(
      "<script language='JavaScript' type='text/javascript'>"); 
     //For order Panel 
     sbScript.Append(
     "document.cookie = cookieDivOnlineContacts + \"" + 
     "=\" + \"\" + -1 + \"; path=/\";"); 

     sbScript.Append("</script>"); 
     //// Make use ScriptManager to register the script 
     ScriptManager.RegisterStartupScript(
      this, 
      this.GetType(), 
      "@@@@MyCallBackAlertScript", 
      sbScript.ToString(), 
      false); 
    } 

    StringBuilder sbScript1 = new StringBuilder(); 
    sbScript1.Append(
     "<script language='JavaScript' type='text/javascript'>"); 
    //For order Panel 
    sbScript1.Append(
     "var strCookOnlineContacts = " + 
     "readCookieRfqOrder(\"cookieDivOnlineContacts\"); " + 
     "document.getElementById(\"RadPanelBarRoster\").scrollTop " + 
     "= strCookOnlineContacts;"); 

    sbScript1.Append("</script>"); 

    // Make use ScriptManager to register the script 
    ScriptManager.RegisterStartupScript(
     this, 
     this.GetType(), 
     "@@@@MyCallBackAlertScript", 
     sbScript1.ToString(), 
     false); 

} 

Sono principiante, in modo da fornire me aiuto adeguato.

+0

Hai provato a impostare maintainScrollPositionOnPostback su true? Vedi se aiuta. – Tariqulazam

risposta

2

si sta cercando con i biscotti, qui è anche un pezzo di codice provare questo Alos, inserire questo codice nella sezione JavaScript

questo farà risparmiare scorrere posizione su richiesta di avvio e sarà memorizzare la posizione di scorrimento indietro quando la pagina è completamente renderizzata.

function pageLoad() 
     { 
      $("your radID").scroll(function() { 
      SaveScrollPosition(); 
      }); 
     } 

    var yPos; 
     function SaveScrollPosition(){ 
     yPos = $("your rad bar id").scrollTop(); 
     } 

     function ReturnPos() { 
     $("your radID").scrollTop(yPos); 
     } 


    function OnResponseEnd(sender ,eventArgs) 
     { 
      ReturnPos(); 
     } 

    function OnRequestStart(sender ,eventArgs) 
     { 

      SaveScrollPosition(); 
     } 

e qui è il tuo html

<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest" ClientEvents-OnRequestStart="OnRequestStart" ClientEvents-OnResponseEnd="OnResponseEnd"> 
// you code here 
</telerik:RadAjaxManager> 

Sono sicuro che questo risolverà il problema. Grazie Si prega di contrassegnarlo come risposta se si tratta di una soluzione.

+0

Ciao Azeem Raavi Grazie per la soluzione. – Mubarak

Problemi correlati