<RadzenDataGrid FilterMode="FilterMode.Simple" Data="@data.records" TItem="typeof(data.records[0])" AllowFiltering="@data.allowFiltering" AllowPaging="@data.allowPaging" AllowSorting="@data.allowSorting">
<Columns>
@foreach (var colDef in data.columnDefinitions)
{
<RadzenDataGridColumn TItem="typeof(data.records[0])" Property="@colDef.columnProperty" Title="@colDef.columnTitle" />
}
</Columns>
</RadzenDataGrid>
您可能想尝试在dotnet 6中尝试动态组件:
<DynamicComponent Type="@componentType" Parameters="@parameters" />
@code {
private Type componentType = ...;
private IDictionary<string, object> parameters = ...;
}
docs:https://learn.microsoft.com/en-us/aspnet/core/blazor/components/components/dynamiccomponent?view =aspnetcore-6.0
其他dotnet版本的其他选项是尝试直接在代码中定义渲染片段(请注意,请注意关注评论):
@page "/built-content"
<h1>Build a component</h1>
<div>
@CustomRender
</div>
<button @onclick="RenderComponent">
Create three Pet Details components
</button>
@code {
private RenderFragment? CustomRender { get; set; }
private RenderFragment CreateComponent() => builder =>
{
for (var i = 0; i < 3; i++)
{
builder.OpenComponent(0, typeof(PetDetails));
builder.AddAttribute(1, "PetDetailsQuote", "Someone's best friend!");
builder.AddAttribute(2, "TItem", typeof(data.records[0])); // ATTENTION
builder.CloseComponent();
}
};
private void RenderComponent()
{
CustomRender = CreateComponent();
}
}
docs:
https://learn.microsoft.com/en-us/aspnet/core/blazor/advanced-scenarios?view =aspnetcore-3.1