Pregunta Clasificación de resumen de grupo ASPxGridView: clasifica el contenido dentro, no el resumen fuera


He hecho la agrupación de la grilla dando groupindex a una columna particular en aspxgridview.

Por ejemplo, si estoy agrupando por nombre de personas y los detalles de las órdenes hechas por esa persona particular entrarían en el contenido detallado cuando se hace clic en la flecha para ver el contenido.

Cuando hago clic en los campos de encabezado para ordenar, está ordenando los datos dentro del groupContent pero no se usa para clasificar los datos de groupummary

Estoy mostrando todos los totales como parte del resumen del grupo además del nombre de la persona.

Por ejemplo, si ve en el enlace a continuación:

https://demos.devexpress.com/ASPxGridViewDemos/Summary/GroupSortBySummary.aspx

Si ordena por nombre de empresa, el contenido se ordenará, pero el resumen que muestra el país y la suma no tiene forma de clasificarse en un nivel externo.

Sugiéreme opciones para resolver este problema.

Gracias.


11
2017-09-06 21:00


origen


Respuestas:


Aquí hay una solución, basada en esta ejemplo.
La idea principal es crear un ítem resumen que muestre el valor mínimo o máximo de Country columna adentro City agrupar y ordenar City agrupar por este resumen de valores. Para esto BeforeColumnSortingGrouping evento se usa para cambiar el comportamiento de clasificación.
Aquí hay un ejemplo:

<dx:ASPxGridView ...
    OnBeforeColumnSortingGrouping="gridCustomers_BeforeColumnSortingGrouping">
private void SortByCountry()
{
    gridCustomers.GroupSummary.Clear();
    gridCustomers.GroupSummarySortInfo.Clear();

    var sortOrder = gridCustomers.DataColumns["Country"].SortOrder;

    SummaryItemType summaryType = SummaryItemType.None;

    switch (sortOrder)
    {
        case ColumnSortOrder.None:
            return;
            break;
        case ColumnSortOrder.Ascending:
            summaryType = SummaryItemType.Min;
            break;
        case ColumnSortOrder.Descending:
            summaryType = SummaryItemType.Max;
            break;
    }

    var groupSummary = new ASPxSummaryItem("Country", summaryType);
    gridCustomers.GroupSummary.Add(groupSummary);

    var sortInfo = new ASPxGroupSummarySortInfo();
    sortInfo.SortOrder = sortOrder;
    sortInfo.SummaryItem = groupSummary;
    sortInfo.GroupColumn = "City";

    gridCustomers.GroupSummarySortInfo.AddRange(sortInfo);
}

protected void Page_Load(object sender, EventArgs e)
{
    SortByCountry();
}

protected void gridCustomers_BeforeColumnSortingGrouping(object sender, ASPxGridViewBeforeColumnGroupingSortingEventArgs e)
{
    SortByCountry();
}

1
2017-09-04 11:37



Cuando agrupa por columna, devexpress usa automáticamente esa columna para ordenar. Sin ordenar los datos, la agrupación no es posible. Para superar este problema, hemos ordenado la fuente de datos en sí y luego aplicamos ese origen de datos a la cuadrícula.


0
2018-03-18 16:11