Skip to content

Commit a9f15b7

Browse files
NansiYanchevayordan-mitevdimodi
authored
docs(grid): Add Cell Selection documentation and revamp Selection articles (#2211)
* docs(Grid):Add cell selection to overview article. Revamp Selection in Template and add related KB. * draft revamp of overview selection page * draft the selection overview page * docs(Grid): Revamp selection overview. Add Row Selection. * add rows selection examples * docs(Grid): revamp selection and other grid features * docs(Grid): draft cell selection article * docs(Grid): update events article * docs(Grid): update cell selection article * docs(Grid): work on selection and templates * docs(Grid): update rows and overview articles * docs(Grid): finalize rows selection article * docs(Grid): update cells,overview and rows * docs(Grid): finalize cell article update overview and row * docs(Grid): handle redirection * docs(Grid): rename data type * Update components/grid/selection/cells.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/selection/cells.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/selection/cells.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/selection/overview.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/selection/rows.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/selection/overview.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/selection/rows.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/selection/rows.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/selection/rows.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/selection/rows.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/selection/rows.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update knowledge-base/grid-row-selection-in-column-template.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update knowledge-base/grid-row-selection-in-column-template.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update knowledge-base/grid-row-selection-in-column-template.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update knowledge-base/grid-row-selection-in-column-template.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update knowledge-base/grid-row-selection-in-column-template.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * Update components/grid/overview.md Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> * docs(Grid): update after review * Update components/grid/selection/cells.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Update components/grid/selection/overview.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Update components/grid/selection/overview.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Update components/grid/selection/overview.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * docs(Grid): update after review * docs(grid): Overview and Row Selection revamp * docs(treelist): Remove Cell selection draft * docs(grid): Revamp Cell Selection article --------- Co-authored-by: Yordan <60105689+yordan-mitev@users.noreply.github.com> Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com>
1 parent 65af173 commit a9f15b7

19 files changed

+604
-687
lines changed

components/grid/columns/auto-generated.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,5 +384,5 @@ This example shows how to:
384384
## See also
385385
* [Column Width]({%slug grid-columns-width%})
386386
* [Live Demo: Auto Generated Columns](https://demos.telerik.com/blazor-ui/grid/column-auto-generation)
387-
* [Selection]({%slug components/grid/selection/overview%})
387+
* [Selection]({%slug grid-selection-overview%})
388388
* [Paging]({%slug components/grid/features/paging%})

components/grid/columns/checkbox.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ position: 2
1212

1313
This article describes the configuration parameters of the Blazor `GridCheckboxColumn`.
1414

15-
The `GridCheckboxColumn` provides an additional way for users to [select Grid rows]({%slug components/grid/selection/overview%}). By default, users can select and unselect rows by clicking anywhere on them.
15+
The `GridCheckboxColumn` provides an additional way for users to [select Grid rows]({%slug grid-selection-overview%}). By default, users can select and unselect rows by clicking anywhere on them.
1616

1717
If you need checkboxes to display or edit boolean values, then use a [Grid column template]({%slug grid-templates-column%}) instead.
1818

@@ -25,7 +25,7 @@ The Grid checkbox column has the following exclusive parameters. For other avail
2525
| Parameter | Type and Default&nbsp;Value | Description |
2626
| --- | --- | --- |
2727
| `CheckBoxOnlySelection` | `bool` | Determines if row selection occurs only on checkbox clicks. By default, user can select rows by clicking anywhere, except on command buttons. |
28-
| `SelectAll` | `bool` <br /> (`true`) | Determines if the column header renders a checkbox to select all rows. Set this to `false` if the [Grid `SelectionMode` is `Single`]({%slug components/grid/selection/single%}). The `SelectAll` parameter has no effect when the checkbox column has a [`HeaderTemplate`](#headertemplate). |
28+
| `SelectAll` | `bool` <br /> (`true`) | Determines if the column header renders a checkbox to select all rows. Set this to `false` if the [Grid `SelectionMode` is `Single`]({%slug grid-selection-overview%}#use-single-or-multiple-selection). The `SelectAll` parameter has no effect when the checkbox column has a [`HeaderTemplate`](#headertemplate). |
2929
| `SelectAllMode` | `GridSelectAllMode` enum <br /> (`Current`) | Determines if the header cell checkbox selects all rows on the current page, or all rows in the Grid. `Current` selects the visible rows on the current page. `All` selects all the data items, including ones that may be currently filtered out. `All` requires the [Grid to be data-bound via its `Data` parameter, and not `OnRead`]({%slug common-features-data-binding-overview%}#how-to-provide-data). When using `OnRead`, the two `SelectAllMode`s behave identically, because the Grid controls only one page of items. |
3030
| `Title` | `string` | The text in the checkbox column's header. The title renders only when `SelectAll` is `false`. |
3131

@@ -185,4 +185,4 @@ The example below doesn't take into account sorting, filtering and paging. If th
185185
## See Also
186186

187187
* [Live Demo: Grid Selection](https://demos.telerik.com/blazor-ui/grid/selection)
188-
* [Grid Selection Overview]({%slug components/grid/selection/overview%})
188+
* [Grid Selection Overview]({%slug grid-selection-overview%})

components/grid/editing/incell.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ Click a cell, edit it and click outside of the grid to see the change. You can a
209209

210210
## Incell Editing and Selection
211211

212-
* To enable item selection with InCell Edit Mode, add a `<GridCheckboxColumn />` to the `<Columns>` collection. More information on that can be read in the [Selection]({%slug components/grid/selection/overview%}#notes) article.
212+
* To enable row selection with InCell Edit Mode, add a `<GridCheckboxColumn />` to the `<Columns>` collection. More information on that can be read in the [Row Selection]({%slug grid-selection-row%}#selection-and-editing-modes) article.
213213

214214
* To see how to select the row that is being edited in InCell edit mode without using a `<GridCheckboxColumn />` check out the [Row Selection in Edit with InCell EditMode]({%slug grid-kb-row-select-incell-edit%}) Knowledge Base article.
215215

@@ -238,4 +238,4 @@ The incell editor template requires a focusable element to maintain the tab orde
238238
## See Also
239239

240240
* [Live Demo: Grid InCell Editing](https://demos.telerik.com/blazor-ui/grid/editing-incell)
241-
* [Grid Selection Documentation]({%slug components/grid/selection/overview%})
241+
* [Grid Selection Documentation]({%slug grid-selection-overview%})

components/grid/events.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ This article explains the events available in the Telerik Grid for Blazor. They
2929
* [PageChanged](#pagechanged)
3030
* [PageSizeChanged](#pagesizechanged)
3131
* [SelectedItemsChanged](#selecteditemschanged)
32+
* [SelectedCellsChanged](#selectedcellschanged)
3233

3334
## CUD Events
3435

@@ -1055,7 +1056,11 @@ Make sure to update the current page size when using the event.
10551056

10561057
## SelectedItemsChanged
10571058

1058-
Fires when item selection is enabled and the user [selects or deselects one item]({%slug components/grid/selection/single%}#selecteditemschanged-event) or [multiple items]({%slug components/grid/selection/multiple%}#selecteditemschanged-event), depending on the [selection mode]({%slug components/grid/selection/overview%}).
1059+
Fires when [row selection is enabled]({%slug grid-selection-overview%}#enable-row-or-cell-selection) and the user selects or deselects one row or multiple rows, depending on the [selection mode]({%slug grid-selection-overview%}#use-single-or-multiple-selection).
1060+
1061+
## SelectedCellsChanged
1062+
1063+
Fires when [cell selection is enabled]({%slug grid-selection-overview%}#enable-row-or-cell-selection) and the user selects or deselects one cell or multiple cells, depending on the [selection mode]({%slug grid-selection-overview%}#use-single-or-multiple-selection).
10591064

10601065
## See Also
10611066

components/grid/overview.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,13 @@ The Grid supports custom content in various parts of the component such as data
144144

145145
## More Blazor Grid Features
146146

147-
* [Selection]({%slug components/grid/selection/overview%}) - select one or multiple rows via clicks or checkboxes
148-
* [State]({%slug grid-state%}) - get or set the Grid configuration programmatically
149-
* [Toolbar]({%slug components/grid/features/toolbar%}) - define user actions in a toolbar above the header cells
150-
* [Hierarchy]({%slug components/grid/features/hierarchy%}) - nest Grids and visualize parent-child relations between data records
151-
* [Drag and drop rows]({%slug grid-drag-drop-overview%}) - move rows in a Grid or between different Grids
152-
* [Loading animation]({%slug grid-loading%}) - show a loading animation to improve user experience during long data operations
153-
* Scrolling - the Grid will show standard scrollbars automatically if the data does not fit the current component width and height.
147+
* [Selection]({%slug grid-selection-overview%})select one or multiple rows through clicks or checkboxes or select one or multiple cells through clicks.
148+
* [State]({%slug grid-state%})get or set the Grid configuration programmatically.
149+
* [Toolbar]({%slug components/grid/features/toolbar%})define user actions in a toolbar above the header cells.
150+
* [Hierarchy]({%slug components/grid/features/hierarchy%})nest Grids and visualize parent-child relations between data records.
151+
* [Drag and drop rows]({%slug grid-drag-drop-overview%})move rows in a Grid or between different Grids.
152+
* [Loading animation]({%slug grid-loading%})show a loading animation to improve user experience during long data operations.
153+
* Scrollingthe Grid will show standard scrollbars automatically if the data does not fit the current component width and height.
154154

155155

156156
## Grid Parameters

components/grid/row-drag-drop.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1691,7 +1691,7 @@ public class Resource
16911691

16921692
### Drag and Drop multiple Rows
16931693

1694-
You can drag and drop multiple rows in one or between multiple instances of the Grid. To enable it, you should set the [`SelectionMode` parameter]({%slug components/grid/selection/overview%}) of the TelerikGrid to `GridSelectionMode.Multiple`. Then, if you drag a selected row, you will effectively drag all the selected rows.
1694+
You can drag and drop multiple rows in one or between multiple instances of the Grid. To enable it, you should set the [`SelectionMode` parameter]({%slug grid-selection-overview%}) of the TelerikGrid to `GridSelectionMode.Multiple`. Then, if you drag a selected row, you will effectively drag all the selected rows.
16951695

16961696
When you select multiple rows, the row drag clue will be `N items selected` where `N` is the number of selected rows.
16971697

components/grid/selection/cells.md

Lines changed: 240 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,240 @@
1+
---
2+
title: Cell Selection
3+
page_title: Grid - Cells Selection
4+
description: Learn how to select cell in Blazor Grid component. Explore the selected cells. Discover cell selection bevahior when combined with other Grid features. Try the practical sample code for cell selection.
5+
slug: grid-selection-cell
6+
tags: telerik,blazor,grid,selection,cells
7+
position: 5
8+
---
9+
10+
# Cell Selection
11+
12+
The Grid component supports [single or multiple cell selection]({%slug grid-selection-overview%}#use-single-or-multiple-selection). You can select a cell with mouse click anywhere in the cell. You can access the collection of selected cells, use this collection and manipulate it. You can subscribe to selection events.
13+
14+
## Basics
15+
16+
To select a cell, click anywhere in it.
17+
18+
To select a range of cells in one or more columns, hold the **Shift** key, while clicking on the first and last cell of the range. To select or deselect multiple cells that don't belong to a range, hold the **Ctrl** key.
19+
20+
You can also select a cell range by holding and dragging the mouse cursor. The dragging motion defines the diagonal of a rectangle and the Grid will select the cells under this rectangle. To allow this kind of cell selection, set the `DragToSelect` parameter in [`GridSelectionSettings`]({%slug grid-selection-overview%}#enable-row-or-cell-selection). The **Shift** and **Ctrl** modifiers are not supported in drag-to-select mode.
21+
22+
To enable cell selection:
23+
24+
1. Set the Grid `SelectedCells` parameter to a collection of type `IEnumerable<GridSelectedCellDescriptor>`. The collection must be initialized in advance. See [`GridSelectedCellDescriptor`](#gridselectedcelldescriptor) for infomation about the object properties.
25+
1. Add a `<GridSelectionSettings>` tag to the `<GridSettings>` tag, and set the `SelectionType` parameter to the `GridSelectionType.Cell`.
26+
27+
>caption Grid multiple cell selection
28+
29+
````CSHTML
30+
<TelerikGrid Data="@GridData"
31+
SelectionMode="@GridSelectionMode.Multiple"
32+
@bind-SelectedCells="@SelectedCells"
33+
Pageable="true">
34+
<GridSettings>
35+
<GridSelectionSettings SelectionType="@GridSelectionType.Cell" DragToSelect="true" />
36+
</GridSettings>
37+
<GridColumns>
38+
<GridColumn Field="@nameof(Employee.Name)" />
39+
<GridColumn Field="@nameof(Employee.Team)" />
40+
</GridColumns>
41+
</TelerikGrid>
42+
43+
<h3>Selected Cells:</h3>
44+
45+
<ul>
46+
@foreach (GridSelectedCellDescriptor cellDescriptor in SelectedCells)
47+
{
48+
<li>
49+
Column <code>Field</code>: @cellDescriptor.ColumnField,
50+
<code>EmployeeId</code>: @( ((Employee)cellDescriptor.DataItem).EmployeeId )
51+
</li>
52+
}
53+
</ul>
54+
55+
@code {
56+
private List<Employee> GridData { get; set; } = new();
57+
58+
private IEnumerable<GridSelectedCellDescriptor> SelectedCells { get; set; } = Enumerable.Empty<GridSelectedCellDescriptor>();
59+
60+
protected override void OnInitialized()
61+
{
62+
for (int i = 1; i <= 15; i++)
63+
{
64+
GridData.Add(new Employee()
65+
{
66+
EmployeeId = i,
67+
Name = $"Employee {i}",
68+
Team = $"Team {i % 3 + 1}"
69+
});
70+
}
71+
72+
SelectedCells = new List<GridSelectedCellDescriptor>() {
73+
new GridSelectedCellDescriptor()
74+
{
75+
DataItem = GridData.ElementAt(2),
76+
ColumnField = nameof(Employee.Name)
77+
}
78+
};
79+
}
80+
81+
public class Employee
82+
{
83+
public int EmployeeId { get; set; }
84+
public string Name { get; set; } = string.Empty;
85+
public string Team { get; set; } = string.Empty;
86+
}
87+
}
88+
````
89+
90+
## SelectedCellsChanged Event
91+
92+
You can respond to user selection actions through the `SelectedCellsChanged` event. The event handler receives a collection of type `IEnumerable<GridSelectedCellDescriptor>`. The collection may have multiple, single, or no objects in it, depending on the `SelectionMode` and the last user selection.
93+
94+
>caption Using the Grid SelectedCellsChanged event
95+
96+
````CSHTML
97+
@* Select cells and handle the SelectedCellsChanged event *@
98+
99+
<TelerikGrid Data="@GridData"
100+
SelectionMode="@GridSelectionMode.Multiple"
101+
SelectedCells="@SelectedCells"
102+
SelectedCellsChanged="@( (IEnumerable<GridSelectedCellDescriptor> newSelected) => OnCellSelect(newSelected) )"
103+
Pageable="true">
104+
<GridSettings>
105+
<GridSelectionSettings SelectionType="@GridSelectionType.Cell" DragToSelect="true" />
106+
</GridSettings>
107+
<GridColumns>
108+
<GridColumn Field="@nameof(Employee.Name)" />
109+
<GridColumn Field="@nameof(Employee.Team)" />
110+
</GridColumns>
111+
</TelerikGrid>
112+
113+
<p><code>SelectedItemsChanged</code> fired at: @SelectedCellsChangedLog</p>
114+
115+
<h3>Selected Cells:</h3>
116+
117+
<ul>
118+
@foreach (GridSelectedCellDescriptor cellDescriptor in SelectedCells)
119+
{
120+
<li>
121+
Column <code>Field</code>: @cellDescriptor.ColumnField,
122+
<code>EmployeeId</code>: @( ((Employee)cellDescriptor.DataItem).EmployeeId )
123+
</li>
124+
}
125+
</ul>
126+
127+
@code {
128+
private List<Employee> GridData { get; set; } = new();
129+
130+
private IEnumerable<GridSelectedCellDescriptor> SelectedCells { get; set; } = Enumerable.Empty<GridSelectedCellDescriptor>();
131+
132+
private string SelectedCellsChangedLog { get; set; } = string.Empty;
133+
134+
protected void OnCellSelect(IEnumerable<GridSelectedCellDescriptor> cellDescriptors)
135+
{
136+
// Update the SelectedCells collection manually.
137+
// When using two-way binding, this happens automatically.
138+
SelectedCells = cellDescriptors;
139+
140+
SelectedCellsChangedLog = DateTime.Now.ToLongTimeString();
141+
}
142+
143+
protected override void OnInitialized()
144+
{
145+
for (int i = 1; i <= 15; i++)
146+
{
147+
GridData.Add(new Employee()
148+
{
149+
EmployeeId = i,
150+
Name = $"Employee {i}",
151+
Team = $"Team {i % 3 + 1}"
152+
});
153+
}
154+
155+
SelectedCells = new List<GridSelectedCellDescriptor>() {
156+
new GridSelectedCellDescriptor()
157+
{
158+
DataItem = GridData.ElementAt(2),
159+
ColumnField = nameof(Employee.Name)
160+
}
161+
};
162+
}
163+
164+
public class Employee
165+
{
166+
public int EmployeeId { get; set; }
167+
public string Name { get; set; } = string.Empty;
168+
public string Team { get; set; } = string.Empty;
169+
}
170+
}
171+
````
172+
173+
### SelectedCellsChanged and Asynchronous Operations
174+
175+
The `SelectedCellsChanged` event handler cannot be awaited. To execute asynchronous operations when the user selects rows, use the [`OnRowClick`]({%slug grid-events%}#onrowclick) or [`OnRowDoubleClick`]({%slug grid-events%}#onrowdoubleclick) event instead.
176+
177+
## GridSelectedCellDescriptor
178+
179+
The `GridSelectedCellDescriptor` type exposes the following properties:
180+
181+
@[template](/_contentTemplates/common/parameters-table-styles.md#table-layout)
182+
183+
| Property Name | Type | Description |
184+
| --- | --- | --- |
185+
| `ColumnField` | `string` | The value of the [Grid column `Field`]({%slug components/grid/columns/bound%}#data-binding) parameter, if set. |
186+
| `ColumnId` | `string` | The value of the [Grid column `Id`]({%slug components/grid/columns/bound%}#identification) parameter, if set. |
187+
| `DataItem` | `object` | The Grid data item instance. Cast it to the actual Grid model type before use. |
188+
189+
## Selection When Data Changes
190+
191+
When the Grid `Data` collection changes, the `SelectedCells` collection has the following behavior:
192+
193+
* When the user updates a selected cell and the item instance is replaced, you have to also replace the `SelectedCellDescriptor.DataItem` object in the `SelectedCells` collection. Do that in the [Grid `OnUpdate` event]({%slug components/grid/editing/overview%}#events).
194+
* When the user deletes a row with selected cells, update the `SelectedCells` collection in the the Grid `OnDelete` event handler.
195+
* To select cells from a new item in the Grid you can use the [`OnCreate` event]({%slug components/grid/editing/overview%}#events) to update the `SelectedCells` collection.
196+
197+
### Equals Comparison
198+
199+
The items in `SelectedCells` are compared against the items in the Grid data in order to determine which cells will be highlighted. The default framework behavior is to compare objects by reference. The data item references may not match when:
200+
201+
* The Grid is databound through its `OnRead` event and each data request returns different data item instances.
202+
* The `SelectedCells` are obtained from a different data source than the all Grid items, for example, from a separate service.
203+
204+
In such cases, the selected cells may not appear as expected. You have to [override the `Equals` method of the Grid model class]({%slug grid-state%}#equals-comparison) so that the items are compared by a unique identifier rather than by reference. When you override `Equals`, it is also recommended to override the [`GetHashCode`](https://docs.microsoft.com/en-us/dotnet/api/system.object.gethashcode) method.
205+
206+
## Cell Selection and Other Grid Features
207+
208+
The selection feature behavior may vary when the Grid configuration combines cell selection and other Grid features, such as editing, virtualization, paging, templates. In such cases you need to consider certain limitation or include some modications.
209+
210+
### Selection and Editing Modes
211+
212+
When you want to edit a Grid item, the cell selection has the following behavior:
213+
214+
* Cell selection is not supported with [`Incell` edit mode]({%slug components/grid/editing/incell%}) due to the overlapping pointer events that trigger selection and editing. If both features are enabled, only the editing will work.
215+
* [`Inline` edit mode]({%slug components/grid/editing/inline%}) and [`Popup` edit mode]({%slug components/grid/editing/popup%}) integrate with cell selection without limitations.
216+
217+
### Selection and Virtual Scrolling
218+
219+
When the Grid has [virtual scrolling]({%slug components/grid/virtual-scrolling%}), the component is able to select a range of cells with **Shift** only if all rows in that range are currently rendered. Consider the following scenario:
220+
221+
1. Select a cell.
222+
1. Scroll down, so that virtualization kicks in and the rendered rows are no longer the same.
223+
1. Select another cell with **Shift**.
224+
225+
In this case, the range selection will start from the first row that is currently rendered. Compare with [Selection and paging](#selection-and-paging) below.
226+
227+
### Selection and Paging
228+
229+
The `SelectedCells` collection persists across paging.
230+
231+
### Selection and Templates
232+
233+
When using [Grid templates]({%slug components/grid/features/templates%}) with cell selection:
234+
235+
* If you are using a [Grid column template]({%slug grid-templates-column%}) and you have a clickable element in the template, wrap this element in a container with a `@onclick:stopPropagation` directive. You can check the knowledge base article on [how to prevent row selection when the user clicks another component in the Grid column template]({%slug grid-kb-row-selection-in-column-template%}). It applies for both row and cell selection.
236+
* If you are using a [row template]({%slug components/grid/features/templates%}#row-template) the Grid does not support cell selection. The row template removes the built-in cell instances and the HTML markup may not even include the expected number of cells.
237+
238+
## See Also
239+
240+
* [Live Demo: Grid Cell Selection](https://demos.telerik.com/blazor-ui/grid/cell-selection)

0 commit comments

Comments
 (0)