动态类型参数to Glazor组件

问题描述 投票:0回答:1
datagrid如下:

<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
c# blazor radzen
1个回答
3
投票

其他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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.