<div class="mx-0 px-0" >
<MCard Class="mt-5 pb-5">
<MTabs Value="tabIndex" ValueChanged="args => TabChange(args)">
@foreach (var key in tabs.Keys)
{
<MTab Value="key">
@tabs[key]
</MTab>
}
</MTabs>
<MTabsItems Value="@tabIndex">
<MTabItem Value="1">
<StandardInfo Class="mt-5" Type="1" Item="_subjectAnalysisDTO"></StandardInfo>
</MTabItem>
<MTabItem Value="0">
<StandardInfo Class="mt-5" Type="0" Item="_subjectAnalysisDTO"></StandardInfo>
</MTabItem>
</MTabsItems>
<div class="grid-container my-5 mx-5">
<DxGrid @ref="Grid2"
Data="@cls列表导出"
ColumnResizeMode="GridColumnResizeMode.NextColumn"
TextWrapEnabled="true"
HighlightRowOnHover="true"
PageSize="20">
<Columns>
<DxGridDataColumn FieldName="姓名" Width="100px" />
<DxGridDataColumn FieldName="部门" Width="100px" />
<DxGridDataColumn FieldName="工号" Width="150px" />
<DxGridDataColumn FieldName="岗位" Width="100px" />
<DxGridDataColumn FieldName="项目名称" Width="100px" />
<DxGridDataColumn FieldName="总完成数" Width="100px" />
<DxGridDataColumn FieldName="总进度" Width="100px" />
<DxGridBandColumn Caption="任务明细" Width="100px">
<Columns>
@* 任务生成 *@
@foreach (var stageName in 任务列表导出)
{
<DxGridDataColumn Caption="@stageName" Width="100px">
<CellDisplayTemplate Context="context">
@{
var item = (cls导出)context.DataItem;
var stageData = item.任务数据列表?.FirstOrDefault(s => s.任务名称 == stageName);
@(stageData?.任务状态 ?? "-")
}
</CellDisplayTemplate>
</DxGridDataColumn>
}
</Columns>
</DxGridBandColumn>
@* 阶段生成 *@
@foreach (var stageName in 所有阶段列表导出)
{
<DxGridBandColumn Caption="@stageName" Width="100px">
<Columns>
<DxGridDataColumn Caption="开始时间" Width="100px">
<CellDisplayTemplate Context="context">
@{
var item = (cls导出)context.DataItem;
var stageData = item.阶段数据列表导出?.FirstOrDefault(s => s.阶段名称 == stageName);
@(stageData?.开始时间 ?? "-")
}
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn Caption="结束时间" Width="100px">
<CellDisplayTemplate Context="context">
@{
var item = (cls导出)context.DataItem;
var stageData = item.阶段数据列表导出?.FirstOrDefault(s => s.阶段名称 == stageName);
@(stageData?.结束时间 ?? "-")
}
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn Caption="首次学习" Width="100px">
<CellDisplayTemplate Context="context">
@{
var item = (cls导出)context.DataItem;
var stageData = item.阶段数据列表导出?.FirstOrDefault(s => s.阶段名称 == stageName);
@(stageData?.首次学习时间 ?? "-")
}
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn Caption="最近学习" Width="100px">
<CellDisplayTemplate Context="context">
@{
var item = (cls导出)context.DataItem;
var stageData = item.阶段数据列表导出?.FirstOrDefault(s => s.阶段名称 == stageName);
@(stageData?.最近学习时间 ?? "-")
}
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn Caption="阶段合格" Width="100px">
<CellDisplayTemplate Context="context">
@{
var item = (cls导出)context.DataItem;
var stageData = item.阶段数据列表导出?.FirstOrDefault(s => s.阶段名称 == stageName);
<span class="@(stageData?.阶段合格)">
@(stageData?.阶段合格)
</span>
}
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn Caption="阶段状态" Width="100px">
<CellDisplayTemplate Context="context">
@{
var item = (cls导出)context.DataItem;
var stageData = item.阶段数据列表导出?.FirstOrDefault(s => s.阶段名称 == stageName);
<span class="@(stageData?.阶段状态)">
@(stageData?.阶段状态 ?? "未开始")
</span>
}
</CellDisplayTemplate>
</DxGridDataColumn>
<DxGridDataColumn Caption="阶段完成数" Width="100px">
<CellDisplayTemplate Context="context">
@{
var item = (cls导出)context.DataItem;
var stageData = item.阶段数据列表导出?.FirstOrDefault(s => s.阶段名称 == stageName);
@(stageData?.阶段完成数 ?? "0")
}
</CellDisplayTemplate>
</DxGridDataColumn>
</Columns>
</DxGridBandColumn>
}
</Columns>
<ToolbarTemplate>
<DxToolbar>
<DxToolbarItem Text="导出Excel" IconCssClass="dx-icon-exportxlsx" Click="ExportXlsx_Click导出" />
</DxToolbar>
</ToolbarTemplate>
</DxGrid>
</div>
</MCard>
</div>
private async Task ExportXlsx_Click导出()
{
if (Grid2 == null) return;
try
{
Grid2.Reload();
await Grid2.ExportToXlsxAsync($"学习进度详细报表_{DateTime.Now:yyyyMMdd_HHmmss}");
}
catch (Exception ex)
{
Console.WriteLine($"导出失败: {ex.Message}");
}
}
相似问题