首页 > 解决方案 > 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 问题,它仍然是开放的)。

这甚至可能吗,如果是这样,我应该在这里使用什么方法?

标签: c#lambdablazortype-parameter

解决方案


对不起,我没有给你一个直接的答案,但你可以看到这个项目的可排序和可过滤表,包括 lambda 表达式。我在我的项目中使用它,目前运行良好。希望你发现它有用:)。 Blazor 可排序表


推荐阅读