Skip to content

Commit e95e089

Browse files
github-actions[bot]KB Bot
andauthored
Added new kb article treelist-paging-pre-selected-node (#3115)
Co-authored-by: KB Bot <[email protected]>
1 parent d995a59 commit e95e089

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
---
2+
title: How to Initially Display the Page with a Pre-Selected Node in TreeList
3+
description: Learn how to ensure a pre-selected node is visible by automatically navigating to its page in a Telerik TreeList with pagination enabled.
4+
type: how-to
5+
page_title: Navigate to Page Containing Pre-Selected Node in TreeList
6+
meta_title: Navigate to Page Containing Pre-Selected Node in TreeList
7+
slug: treelist-kb-paging-pre-selected-node
8+
tags: treelist, paging, pre-selected, node, navigation, page, size, blazor
9+
res_type: kb
10+
ticketid: 1690423
11+
---
12+
13+
## Environment
14+
15+
<table>
16+
<tbody>
17+
<tr>
18+
<td>Product</td>
19+
<td>TreeList for Blazor</td>
20+
</tr>
21+
</tbody>
22+
</table>
23+
24+
## Description
25+
26+
I have a Telerik [TreeList](slug:treelist-overview) with a checkbox for selection and pagination enabled. I pre-select a node programmatically and need the TreeList to automatically navigate to the page containing the first selected node.
27+
28+
## Solution
29+
30+
To automatically show the page that contains the first pre-selected node in your Telerik TreeList with paging enabled, you need to programmatically set the TreeList's `Page` property based on the index of the selected node in your data.
31+
32+
1. Identify the index of the first selected node in your data source.
33+
2. Use the PageSize to determine on which page the node appears.
34+
3. Assign the calculated page number to the TreeList's Page parameter before rendering.
35+
36+
````Razor
37+
<TelerikTreeList Data="@TreeListData"
38+
IdField="@nameof(Employee.Id)"
39+
ParentIdField="@nameof(Employee.ParentId)"
40+
SelectionMode="@TreeListSelectionMode.Multiple"
41+
@bind-SelectedItems="@SelectedEmployees"
42+
Pageable="true"
43+
@bind-PageSize="@PageSize"
44+
@bind-Page="@CurrentPage">
45+
<TreeListColumns>
46+
<TreeListCheckboxColumn Width="50px" />
47+
<TreeListColumn Field="@nameof(Employee.FirstName)" Title="First Name" Width="350px" Expandable="true" />
48+
<TreeListColumn Field="@nameof(Employee.LastName)" Title="Last Name" />
49+
<TreeListColumn Field="@nameof(Employee.Position)" Title="Position" Width="200px" />
50+
</TreeListColumns>
51+
</TelerikTreeList>
52+
53+
@code {
54+
private List<Employee> TreeListData { get; set; } = new();
55+
private IEnumerable<Employee> SelectedEmployees { get; set; } = Enumerable.Empty<Employee>();
56+
private int PageSize = 10;
57+
private int CurrentPage = 1;
58+
59+
protected override void OnInitialized()
60+
{
61+
TreeListData = new List<Employee>();
62+
63+
for (int i = 1; i <= 59; i++)
64+
{
65+
TreeListData.Add(new Employee()
66+
{
67+
Id = i,
68+
ParentId = i <= 3 ? null : i % 3 + 1,
69+
FirstName = "First " + i,
70+
LastName = "Last " + i,
71+
Position = i <= 3 ? "Team Lead" : "Software Engineer"
72+
});
73+
}
74+
75+
SelectedEmployees = new List<Employee>() { TreeListData.ElementAt(2) };
76+
77+
var selectedId = SelectedEmployees.FirstOrDefault()?.Id;
78+
if (selectedId != null)
79+
{
80+
// Step 1: Flatten the tree as it would appear expanded
81+
var flatList = new List<Employee>();
82+
foreach (var root in TreeListData.Where(e => e.ParentId == null))
83+
{
84+
FlattenHierarchy(root, flatList);
85+
}
86+
87+
// Step 2: Find index of selected item in flattened list
88+
var index = flatList.FindIndex(e => e.Id == selectedId);
89+
if (index >= 0)
90+
{
91+
CurrentPage = (index / PageSize) + 1;
92+
}
93+
}
94+
}
95+
96+
private void FlattenHierarchy(Employee node, List<Employee> result)
97+
{
98+
result.Add(node);
99+
var children = TreeListData.Where(e => e.ParentId == node.Id);
100+
foreach (var child in children)
101+
{
102+
FlattenHierarchy(child, result);
103+
}
104+
}
105+
106+
public class Employee
107+
{
108+
public int Id { get; set; }
109+
public int? ParentId { get; set; }
110+
public string FirstName { get; set; } = string.Empty;
111+
public string LastName { get; set; } = string.Empty;
112+
public string Position { get; set; } = string.Empty;
113+
}
114+
}
115+
````
116+
117+
## See Also
118+
119+
* [TreeList Overview](slug:treelist-overview)
120+
* [TreeList Paging](slug:treelist-paging)

0 commit comments

Comments
 (0)