Я работаю с Blazor и хочу иметь возможность сортировать сетку данных (таблицу) по заданному столбцу через параметр SortBy, который принимает лямбда-выражение. Это выглядело бы примерно так:
<DataGrid Items="Orders">
<GridHeader>
<GridColumn Label="Order Number" SortBy="@(order => order.OrderNumber)" />
<GridColumn Label="Order Date" SortBy="@(order => order.Date)" />
<GridColumn Label="Order Status" SortBy="@(order => order.Status)" />
<GridColumn Label="Number of Line Items" SortBy="@(order => order.LineItems.Count)" />
</GridHeader>
<GridRow Context="order">
<td>@order.OrderNumber</td>
<td>@order.OrderDate</td>
<td>@order.Status</td>
<td>@order.LineItems.Count</td>
</GridRow>
</Table>
Компонент Grid должен иметь возможность принимать IEnumerable
любого типа (например, IEnumerable<Order>
), поэтому компонент <DataGrid>
должен иметь универсальный c тип, связанный с элементами строки, устанавливается через @typeparam TableItem
. У меня проблемы с тем, что я могу ссылаться на этот тип TableItem
в параметре GridColumn
SortBy
. Мне нужно, чтобы мой редактор кода (Visual Studio) распознал тип TableItem
в лямбда-выражении SortBy
, чтобы (в этом примере), когда я начинаю вводить SortBy="@(order => order.)"
, он распознает порядок как тип Order
и intellisense поднимет свойства этого типа. Я думаю, что решение как-то связано с использованием каскадных параметров (CascadingValue
) и @typeparam
, но я не смог заставить его работать, и задаюсь вопросом, возможно, есть текущее ограничение Blazor, которое мешает этому работать (например, см. этот выпуск github , который все еще открыт).
Возможно ли это вообще, и если да, то какой подход я должен использовать здесь?