c# - Blazor - 表列组件的 SortBy 参数
问题描述
我正在使用 Blazor,并希望能够通过采用 lambda 表达式的 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>
组件应该具有与其行项关联的泛型类型,通过@typeparam TableItem
. 我遇到的问题是能够TableItem
在参数中引用该类型GridColumn
SortBy
。我需要它,以便我的代码编辑器 (Visual Studio) 识别 lambda 表达式中的TableItem
类型SortBy
,以便(在此示例中)当我开始键入时,SortBy="@(order => order.)"
它将顺序识别为类型Order
,并且智能感知将显示该类型的属性。我认为解决方案与使用级联参数 ( CascadingValue
) 和@typeparam
,但我无法让它工作,并想知道是否可能存在 Blazor 的当前限制阻止它工作(例如,请参阅这个 github 问题,它仍然是开放的)。
这甚至可能吗,如果是这样,我应该在这里使用什么方法?
解决方案
对不起,我没有给你一个直接的答案,但你可以看到这个项目的可排序和可过滤表,包括 lambda 表达式。我在我的项目中使用它,目前运行良好。希望你发现它有用:)。 Blazor 可排序表。