Blazor - параметр SortBy для компонента столбца таблицы - PullRequest
0 голосов
/ 11 февраля 2020

Я работаю с 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 , который все еще открыт).

Возможно ли это вообще, и если да, то какой подход я должен использовать здесь?

1 Ответ

2 голосов
/ 11 февраля 2020

извините, что я не даю вам прямого ответа, но вы можете увидеть этот проект для сортируемой и фильтруемой таблицы, включая лямбда-выражения. Я использую его в своем проекте и пока что работает хорошо. Надеюсь, вы нашли это полезным :). Блазор сортируемый стол .

...