New to Telerik UI for ASP.NET AJAX? Start a free 30-day trial
Retaining the RadPanelBar state after URL navigation
Updated over 6 months ago
How to
Retain the RadPanelBar state after URL navigation.
Solution
Here are the basic steps you need to perform:
- 
Pass the ID of the clicked item in the query string of the page 
- 
Locate the panel item on the page to which you redirect 
- 
Mark the item as selected 
- 
Expand its parent items 
Below are the code snippets of a simple example which represents the approach:
ASPX
<telerik:RadPanelBar ID="RadPanelbar1" runat="server"> 
    <Items> 
        <telerik:RadPanelItem Text="Products" Value="Panel1" Expanded="True"> 
            <Items> 
                <telerik:RadPanelItem Value="Panel1_1" Text="RadEditor" /> 
                <telerik:RadPanelItem Value="Panel1_2" NavigateUrl="Default.aspx?SelectedValue=Panel1_2" Text="RadPanelBar" /> 
            </Items> 
        </telerik:RadPanelItem> 
        <telerik:RadPanelItem Value="Panel1_3" Text="RadMenu" ></telerik:RadPanelItem> 
        <telerik:RadPanelItem Value="Panel2" Text="Support"> 
            <Items> 
                <telerik:RadPanelItem Value="Panel2_1" Text="Knowledge Base" /> 
                <telerik:RadPanelItem Value="Panel2_2" Text="Forums" /> 
                <telerik:RadPanelItem Value="Panel2_3" Text="Articles" /> 
            </Items> 
        </telerik:RadPanelItem> 
        <telerik:RadPanelItem Value="Panel3" Text="Client.net"> 
            <Items> 
                <telerik:RadPanelItem Value="Panel3_1" Text="My Client.net" /> 
                <telerik:RadPanelItem Value="Panel3_2" Text="My Profile" /> 
                <telerik:RadPanelItem Value="Panel3_4" Text="My Licenses" /> 
            </Items> 
        </telerik:RadPanelItem> 
    </Items> 
</telerik:RadPanelBar>C#
protected void Page_Load(object sender, EventArgs e) 
{ 
    string selectedItemValue = Request.QueryString["SelectedValue"]; 
    RadPanelItem selectedItem = RadPanelbar1.FindItemByValue(selectedItemValue); 
    if (selectedItem != null) 
    { 
        if (selectedItem.Items.Count > 0) 
        { 
            selectedItem.Expanded = true; 
        } 
        else 
        { 
            selectedItem.Selected = true; 
            while ((selectedItem != null) && 
                    (selectedItem.Parent.GetType() == typeof(RadPanelItem))) 
            { 
                selectedItem = (RadPanelItem)selectedItem.Parent; 
                selectedItem.Expanded = true; 
            } 
        } 
    } 
}