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

Retaining the RadPanelBar state after URL navigation

How to

Retain the RadPanelBar state after URL navigation.

Solution

Here are the basic steps you need to perform:

  1. Pass the ID of the clicked item in the query string of the page

  2. Locate the panel item on the page to which you redirect

  3. Mark the item as selected

  4. Expand its parent items

Below are the code snippets of a simple example which represents the approach:

<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>
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; 
            } 
        } 
    } 
} 
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
    Dim selectedItemValue As String = Request.QueryString("SelectedValue") 

    Dim selectedItem As RadPanelItem = RadPanelbar1.FindItemByValue(selectedItemValue) 

    If selectedItem IsNot Nothing Then 
        If selectedItem.Items.Count > 0 Then 
            selectedItem.Expanded = True 
        Else 
            selectedItem.Selected = True 

            While (selectedItem IsNot Nothing) AndAlso (TypeOf (selectedItem.Parent) Is RadPanelItem) 
                selectedItem = DirectCast(selectedItem.Parent, RadPanelItem) 

                selectedItem.Expanded = True 
            End While 
        End If 
    End If 
End Sub
In this article