none
Por cuál columna está ordenado el DataGrid? RRS feed

  • Pregunta

  • Hola, estoy con mi aplicación Silverlight 5, y tengo una consulta, que presento en un DataGrid, el cual está "bindeado" a un DomainDataSource, el usuario puede ordenar el resultado por cualquiera de las 5 columnas del DataGrid, dando un click sobre la columna por la quiera hacerlo

    La pregunta es: mediante código, ¿cómo puedo preguntar en un momento dado, por cuál de las columnas ordenó el usuario la información del DataGrid?

    Saludos y gracias!!


    cyndyrdz

    jueves, 10 de septiembre de 2015 18:25

Respuestas

  •    Implementé un método, lo anexo por si a alguien le sirve, mi DataGrid está bindeado a un DomainDataSource, así que utilicé su método LoadedData para identificar el campo del Sort, el cual se que siempre es uno solo:

    string strOrderBy;
    private void sp_inv_consumos_desde_requisicion_ResultDomainDataSource_LoadedData(object sender, LoadedDataEventArgs e)
    {
        strOrderBy = "";
        if (!e.HasError)
        {
            var entitys = e.Entities;
    
            // numero total de registros encontrados
            iregistros = entitys.Count();
    
            if (iregistros == 0)
            {
                btnImprimir.IsEnabled = false;
                frmConfirmacion Aviso = new frmConfirmacion("Aviso", "No hay resultados para la consulta solicitada", false);             
                Aviso.Show();
            }
            else
            {
                var sortdescriptor = ((DomainDataSource)sp_inv_consumos_desde_requisicion_ResultDomainDataSource).SortDescriptors;
    
                strOrderBy = sortdescriptor.FirstOrDefault().PropertyPath;
    
                btnImprimir.IsEnabled = true;
            }
        }
        if (e.HasError)
        {
            frmError Error = new frmError("ERROR AL INTENTAR CARGAR LOS DATOS DE CONSUMOS "
                + System.Environment.NewLine + System.Environment.NewLine + e.Error.ToString());
            Error.Show();
            e.MarkErrorAsHandled();
        }
    }
    

       soy muy nueva en esto, no se si es la forma correcta, pero funcionó para lo que necesitaba.


    cyndyrdz

    miércoles, 21 de octubre de 2015 21:06

Todas las respuestas

  • hola

    >>¿cómo puedo preguntar en un momento dado, por cuál de las columnas ordenó el usuario la información del DataGrid?

     implementas el patron MVVM ?

    si es asi podrias usar el EventTrigger con el evento Sorting

    wpf mvvm datagrid loses sort when context recreated

    de esta forma podrias tener la accion del control en el viewmodel

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 10 de septiembre de 2015 19:58
  • ok, gracias Leandro, lo checo despacio, el ejemplo que me mandas es en WPF, creo que no es igual para Silverlight, sigo revisándolo. Saludos

    cyndyrdz

    jueves, 10 de septiembre de 2015 20:28
  •    Implementé un método, lo anexo por si a alguien le sirve, mi DataGrid está bindeado a un DomainDataSource, así que utilicé su método LoadedData para identificar el campo del Sort, el cual se que siempre es uno solo:

    string strOrderBy;
    private void sp_inv_consumos_desde_requisicion_ResultDomainDataSource_LoadedData(object sender, LoadedDataEventArgs e)
    {
        strOrderBy = "";
        if (!e.HasError)
        {
            var entitys = e.Entities;
    
            // numero total de registros encontrados
            iregistros = entitys.Count();
    
            if (iregistros == 0)
            {
                btnImprimir.IsEnabled = false;
                frmConfirmacion Aviso = new frmConfirmacion("Aviso", "No hay resultados para la consulta solicitada", false);             
                Aviso.Show();
            }
            else
            {
                var sortdescriptor = ((DomainDataSource)sp_inv_consumos_desde_requisicion_ResultDomainDataSource).SortDescriptors;
    
                strOrderBy = sortdescriptor.FirstOrDefault().PropertyPath;
    
                btnImprimir.IsEnabled = true;
            }
        }
        if (e.HasError)
        {
            frmError Error = new frmError("ERROR AL INTENTAR CARGAR LOS DATOS DE CONSUMOS "
                + System.Environment.NewLine + System.Environment.NewLine + e.Error.ToString());
            Error.Show();
            e.MarkErrorAsHandled();
        }
    }
    

       soy muy nueva en esto, no se si es la forma correcta, pero funcionó para lo que necesitaba.


    cyndyrdz

    miércoles, 21 de octubre de 2015 21:06