我一直在使用一个C#应用程序,它应该显示一个动态组的报告,从0到“N”,所以我使用foreach
循环来管理所有,代码如下:
private void AgregarAgrupaciones()
{
if (Agrupaciones == null)
return;
DataSet dataSource = (DataSet) DataSource;
GroupHeader1.Level = 0;
int level = 1;
foreach (var agrupacion in Agrupaciones.Reverse())
{
GroupHeaderBand grupoDinamico = new GroupHeaderBand();
XRLabel labelAgrupacion = new XRLabel();
labelAgrupacion.Text = agrupacion.Value;
grupoDinamico.Controls.Add(labelAgrupacion);
grupoDinamico.Height = 0;
XRLabel labelValorAgrupacion = new XRLabel();
labelValorAgrupacion.Text = "";
XRBinding binding = new XRBinding("Text", null, "Inasistencias.Empleado_Inasistencias." + agrupacion.Value);
labelValorAgrupacion.DataBindings.Add(binding);
labelValorAgrupacion.Location = new Point(100, 0);
grupoDinamico.Controls.Add(labelValorAgrupacion);
string campoDb = "Inasistencias.Empleado_Inasistencias.";
campoDb = campoDb + (agrupacion.Value == "Grupo Personal" ? "GrupoPersonalNombre" : agrupacion.Value);
GroupField campo = new GroupField(campoDb, DevExpress.XtraReports.UI.XRColumnSortOrder.Ascending);
grupoDinamico.GroupFields.Add(campo);
grupoDinamico.Level = level;
level++;
Bands.Add(grupoDinamico);
}
}
以前的代码实际上会在报告中显示组的名称,但它并不是真正的分组,例如:
有下表
预期结果将是:
相反,我得到了这个:
注意:填充组的方法是通过报告“打印前”操作调用的,我已经检查过数据源包含我需要的所有值。
答案 0 :(得分:0)
您可以在预览后尝试此代码
GroupHeaderBand band = XtraReportToPreview.Bands[BandKind.GroupHeader] as GroupHeaderBand;
if (band != null)
{
band.GroupFields.Clear();
band.GroupFields.AddRange(new DevExpress.XtraReports.UI.GroupField[]
{
// Set your condition for dynamic group by for each GroupField
new DevExpress.XtraReports.UI.GroupField("Customer", DevExpress.XtraReports.UI.XRColumnSortOrder.Ascending)
});
}