微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DevExpress Blazor DxDataGrid - 使用组件时访问上下文?

如何解决DevExpress Blazor DxDataGrid - 使用组件时访问上下文?

在 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...
        }
    }

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

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。