如何解决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 举报,一经查实,本站将立刻删除。