【发布时间】:2020-02-11 16:26:16
【问题描述】:
我正在使用 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 设置。我遇到的问题是能够在 GridColumn SortBy 参数中引用 TableItem 类型。我需要它,以便我的代码编辑器 (Visual Studio) 识别 SortBy lambda 表达式中的 TableItem 类型,以便(在此示例中)当我开始输入 SortBy="@(order => order.)" 时,它会将 order 识别为类型 Order并且智能感知将调出该类型的属性。我认为该解决方案与使用级联参数 (CascadingValue) 和 @typeparam 有关,但我无法让它工作,并且想知道 Blazor 是否存在当前限制阻止它工作(例如,请参阅this github issue,它仍然处于打开状态)。
这是否可能,如果可以,我应该在这里使用什么方法?
【问题讨论】:
标签: c# lambda blazor type-parameter