我想创建一种使用 MudBlazor Datagrid 中的 PropertyColumn 创建动态列的方法。
<MudDataGrid @ref=_grid Items="GetItems(Model.ModelClass.Object, Items)">
<Columns>
@foreach(ListViewColumn col in Listview.Columns.OrderBy(x => x.Index))
{
<PropertyColumn Property="@MakeExpression(col, Model.ModelClass.Object, PropertyMatch(col).PropertyType)" Title="@col.Caption" />
}
</Columns>
</MudDataGrid>
@code{
Expression<Func<T, P>> MakeExpression<T, P>(ListViewColumn col, T obj, P item) where T : Type
{
var text = $"x => x.{col.PropertyName}";
return System.Linq.Dynamic.Core.DynamicExpressionParser.ParseLambda<T, P>(new System.Linq.Dynamic.Core.ParsingConfig(), true, text);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它仍然给我一个例外:类型“Type”中不存在属性或字段“String1”
String1 是 propertyName.. Model.ModelClass.Object 是反映 MudDataGrid 的 T 的类型
如何修复我的 Expression<Func<T,P>> 方法?