问题描述
在 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 (将#修改为@)