RadTreeList - Expand Items Stored on Session

0 Answers 3 Views
TreeList
Diego
Top achievements
Rank 1
Diego asked on 24 Oct 2025, 03:12 PM

Hi,

I need to restore the expanded state of a RadTreeList after a redirect. I am storing the expanded items in Session before the redirect. However, server-side expansion only expands the root, not the child items.

Can someone share a JavaScript example or approach to fully expand all previously expanded nodes by the user after a redirect using the stored session data?

If your approach works in Server Side, I will use it on my solution

Thanks team!

This is an example using server side, but it expands only the first root element (not sure why)

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Telerik.Web.UI;

namespace SysMgmt.Groups
{
    public partial class GroupMaintenanceServer : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RadTreeList1.NeedDataSource += RadTreeList1_NeedDataSource;
            }
        }

        protected void RadTreeList1_NeedDataSource(object sender, TreeListNeedDataSourceEventArgs e)
        {
            RadTreeList1.DataSource = GetData();
        }

        // ✅ Guardar los nodos expandidos antes del render
        protected void Page_PreRender(object sender, EventArgs e)
        {
            var expandedItems = RadTreeList1.Items
                .Where(i => i.Expanded)
                .Select(i => (int)i.GetDataKeyValue("ID"))
                .ToList();

            Session["ExpandedNodes"] = expandedItems;
        }

        protected void RadTreeList1_DataBound(object sender, EventArgs e)
        {
            if (Session["ExpandedNodes"] is List<int> expanded)
            {
                foreach (TreeListDataItem item in RadTreeList1.Items)
                {
                    int id = (int)item.GetDataKeyValue("ID");
                    if (expanded.Contains(id))
                        item.Expanded = true;
                }
            }
        }

        protected void RadTreeList1_ItemCommand(object sender, TreeListCommandEventArgs e)
        {
            if (e.CommandName == "EditItem" && e.Item is TreeListDataItem dataItem)
            {
                int id = (int)dataItem.GetDataKeyValue("ID");
                Response.Redirect($"EditPage.aspx?id={id}");
            }
        }

       
        private DataTable GetData()
        {
            DataTable table = new DataTable();
            table.Columns.Add("ID", typeof(int));
            table.Columns.Add("ParentID", typeof(int));
            table.Columns.Add("Text", typeof(string));
            table.Columns.Add("Value", typeof(string));

            // Root nodes
            table.Rows.Add(1, DBNull.Value, "Root 1", "A");
            table.Rows.Add(2, DBNull.Value, "Root 2", "B");

            // Children of Root 1
            table.Rows.Add(3, 1, "Child 1.1", "A1");
            table.Rows.Add(4, 1, "Child 1.2", "A2");

            // Children of Root 2
            table.Rows.Add(5, 2, "Child 2.1", "B1");
            table.Rows.Add(6, 2, "Child 2.2", "B2");

            // Sub-child
            table.Rows.Add(7, 3, "SubChild 1.1.1", "A1a");

            return table;
        }
    }
}

No answers yet. Maybe you can help?

Tags
TreeList
Asked by
Diego
Top achievements
Rank 1
Share this question
or