Skip to content

Commit dcd2103

Browse files
github-actions[bot]KB Botxristianstefanovikoevska
authored
Merge new-kb-grid-add-new-row-navigate-last-page-371fde17b59e4e22ae1d9c4fdc024e0d-2448 into production (#2457)
* Added new kb article grid-add-new-row-navigate-last-page * Update knowledge-base/grid-add-new-row-navigate-last-page.md Co-authored-by: Iva Stefanova Koevska-Atanasova <[email protected]> --------- Co-authored-by: KB Bot <[email protected]> Co-authored-by: Hristian Stefanov <[email protected]> Co-authored-by: Iva Stefanova Koevska-Atanasova <[email protected]>
1 parent 2c1b41a commit dcd2103

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
title: Add a New Grid Row and Navigate to the Last Page
3+
description: Learn how to add a new row to the Grid for Blazor using an external button and navigate to the last page where the new row is inserted.
4+
type: how-to
5+
page_title: Programmatically Add New Rows and Navigate to the Last Page in Telerik Blazor Grid
6+
slug: grid-add-new-row-navigate-last-page
7+
tags: grid, blazor, add, row, navigate, page, programmatically, last
8+
res_type: kb
9+
ticketid: 1667656
10+
---
11+
12+
## Environment
13+
14+
<table>
15+
<tbody>
16+
<tr>
17+
<td>Product</td>
18+
<td>Grid for Blazor</td>
19+
</tr>
20+
</tbody>
21+
</table>
22+
23+
## Description
24+
25+
I want to programmatically add a new row to the Grid at the end of the data and navigate to the last page to view the added row.
26+
27+
## Solution
28+
29+
To add a new row at the end of the Grid and navigate to the last page:
30+
1. Add an external button that triggers the addition of a new item to your data collection.
31+
2. Calculate the page number required to display the newly added item (based on the total number of items and the page size).
32+
3. Programmatically set the Grid's page to the calculated page number to navigate to the last page.
33+
34+
Below is an example demonstrating this approach:
35+
36+
````CSHTML
37+
@* Add/remove employee to see how the Grid reacts to that change. *@
38+
39+
<TelerikButton OnClick="@AddEmployee">Add employee</TelerikButton>
40+
41+
<TelerikButton OnClick="@RemoveEmployee">Remove last employee</TelerikButton>
42+
43+
<TelerikGrid Data="@MyData"
44+
Height="400px"
45+
Pageable="true"
46+
Sortable="true"
47+
Page="@currentPage"
48+
PageSize="@pageSize">
49+
<GridColumns>
50+
<GridColumn Field="@(nameof(SampleData.Id))" Width="120px" />
51+
<GridColumn Field="@(nameof(SampleData.Name))" Title="Employee Name" />
52+
<GridColumn Field="@(nameof(SampleData.Team))" Title="Team" />
53+
<GridColumn Field="@(nameof(SampleData.HireDate))" Title="Hire Date" />
54+
</GridColumns>
55+
</TelerikGrid>
56+
57+
@code {
58+
private int currentPage = 1;
59+
private int pageSize = 10;
60+
61+
private void AddEmployee()
62+
{
63+
var x = MyData.Count + 1;
64+
MyData.Add(new SampleData
65+
{
66+
Id = x,
67+
Name = "name " + x,
68+
Team = "team " + x % 5,
69+
HireDate = DateTime.Now.AddDays(-x).Date
70+
});
71+
MyData = new List<SampleData>(MyData);
72+
73+
currentPage = (int)Math.Ceiling((double)MyData.Count / pageSize);
74+
}
75+
76+
private void RemoveEmployee()
77+
{
78+
if (MyData.Count > 0)
79+
{
80+
MyData.RemoveAt(MyData.Count - 1);
81+
MyData = new List<SampleData>(MyData);
82+
}
83+
}
84+
85+
private List<SampleData> MyData = Enumerable.Range(1, 5).Select(x => new SampleData
86+
{
87+
Id = x,
88+
Name = "name " + x,
89+
Team = "team " + x % 5,
90+
HireDate = DateTime.Now.AddDays(-x).Date
91+
}).ToList();
92+
93+
public class SampleData
94+
{
95+
public int Id { get; set; }
96+
public string Name { get; set; }
97+
public string Team { get; set; }
98+
public DateTime HireDate { get; set; }
99+
}
100+
}
101+
````
102+
103+
## See Also
104+
105+
- [Grid Overview](https://docs.telerik.com/blazor-ui/components/grid/overview)
106+
- [Grid Paging](https://docs.telerik.com/blazor-ui/components/grid/paging)

0 commit comments

Comments
 (0)