New to Telerik UI for ASP.NET AJAX? Download free 30-day trial

How to persist RadPanelBar's state when using Output Caching?

How to

Persist RadPanelBar's state when using Output Caching?

Persisting the RadPanelBar's state requires execution of a server-side code. This execution might be prevented by the output caching. To solve the problem you could use the client-side API of the control to find the panel item corresponding to the current URL and expand its parents.

Example

function pageLoad() 
{ 
    var currentUrl = window.location.href.toLowerCase();      
    var panelbar = $find("<%= RadPanelBar1.ClientID %>");      

    var currentItem = null;      
    var currentItemTemp = null; 
    for (var i = 0; i < panelbar.get_allItems().length; i++)      
    {      
        if (panelbar.get_allItems()[i].get_linkElement() &&      
            currentUrl.indexOf(panelbar.get_allItems()[i].get_linkElement().href.toLowerCase()) > -1)      
        {      
            currentItem = panelbar.get_allItems()[i];   
            currentItemTemp = currentItem;    
            break;      
        }      
    }      

    while (currentItem && currentItem.get_parent() != panelbar)      
    {      
        currentItem.get_parent().expand();      
        currentItem = currentItem.get_parent();      
    }      

    if (currentItemTemp)      
    {      
        currentItemTemp.select();      
        currentItemTemp.expand();      
    }                       
}   
In this article