0

在 Blazor 中使用模板化组件时,真的很难弄清楚如何引用我的网格上下文

我有一个网格组件,它包含一个 ExpandoObjects 列表

ReportGridComponent.razor

@typeparam TData

<div class="w-100">

    @if (Data == null)
    {

    }
    else
    {
    <DxDataGrid Data="Data"
                ShowPager="true"
                ShowDetailRow="true"
                HorizontalScrollBarMode="ScrollBarMode.Auto"
                PagerNavigationMode=@PagerNavigationMode.NumericButtons
                PagerPageSizeSelectorVisible="true"
                PagerAllDataRowsItemVisible="true">

        <Columns>
            @ColumnCollection
        </Columns>

        <TotalSummary>
            @if (SummaryCollection != null)
                {
                @SummaryCollection
                }
        </TotalSummary>

        <DetailRowTemplate>
            @DetailTemplate
        </DetailRowTemplate>

    </DxDataGrid>
    }  
</div>


    @code {
        [Parameter] public IEnumerable<TData> Data { get; set; }
        [Parameter] public RenderFragment ColumnCollection { get; set; }
        [Parameter] public RenderFragment SummaryCollection { get; set; }
        [Parameter] public RenderFragment DetailTemplate { get; set; }

    }

在使用此网格的我的剃须刀主页面中,我想设置主-详细信息,因此我尝试像这样添加我的详细信息网格:

ReportPage.razor

<ReportGridComponent Data="@reportResults">
    <ColumnCollection>
        ***RENDER COLUMNS IN THIS AREA***
    </ColumnCollection>

    <DetailTemplate>
        <div class="p-3">
            <DxDataGrid DataAsync="@GetDetailItems(NEED CONTEXT ITEM HERE)"
                        SelectionMode="DataGridSelectionMode.None"
                        PageSize="5">

                ***RENDER COLUMNS IN THIS AREA****

            </DxDataGrid>
        </div>
    </DetailTemplate>
</ReportGridComponent>

它调用一个事件来提取详细信息:

ReportPage.razor

    protected Func<CancellationToken, Task<IEnumerable<dynamic>>> GetDetailItems(dynamic item)
    {
        return GetDetailsAsync;
        async Task<IEnumerable<dynamic>> GetDetailsAsync(CancellationToken cancellationToken)
        {
            return detail info here...
        }
    }

我的问题是我无法弄清楚如何访问详细信息行模板的上下文,我可以在组件中添加上下文,但无法在我的剃须刀页面中访问它。处理这种情况的正确方法是什么?我尝试了各种将不同的对象传递到渲染片段中,但一直遇到实际获取“上下文”属性的行位于组件中而不是组件外部(DetailRowTemplate)的问题。我也不能只在 razor 页面上的组件内声明 DetailRowTemplate 块,因为它未被识别为组件的子内容。

谢谢

4

0 回答 0