none
ordenar un datagrid por cualquier columna al pulsarla vs 2008 RRS feed

  • Pregunta


  • hola a tod@s
    para  aprender, estoy haciendo una aplicacion pocketoc y tiene un datagrid , y me gustaria que cuando pulsara una cabecera de columna se ordenara por ella..
    hay alguna forma de hacerlo?... no veo ninguna propiedad en el datagrid.....

    pd: soy muy nuevo en esto de los datagrid, bindingsource etc.. cuando cree el origen de datos me creó un dataset, bindingsource y un tableadapter... para que sirve todo esto??  .(si recomendais un manual que lo explique facilito...)

    gracias por adelantado

    jueves, 20 de agosto de 2009 8:38

Respuestas

  • Hola Quim400,

    pues lamentablemente el control DataGrid que viene con el Compact Framework no permite ordenar las columnas de esa forma. Puedes buscar controles de terceros (ThirdParties) y seguro encontrarás controles DataGrid muy potentes.

    Por otro lado te explico el tema DataSets, BindingsSource, etc...

    Al asociar tu DataGrid con un origen de datos (seguramente una base de datos, aunque puedes asociarlo a otros origenes), lo que el diseñador hace de forma automática es generar un DataSet (es una representación en memoria de una base de datos relacional    ) con las tablas que le has indicado en el asistente. Este dataset se nutre de los datos que hay en la base de datos que especificaste en el asistente y para ello necesita de un DataAdapter (que normalmente tiene el nombre "tablaSeleccionadaTableAdapter". Este adapter es el objeto que permite al DataSet conectarse a la base de datos y obtener/actualizar los datos en ella (es decir, todos los cambios que tu hagas al dataset (añadir nuevas filas, actualizar valores de alguna tabla del dataset o eliminar registro de alguna tabla del dataset), el adapter los volcará a la base de datos de forma transparente (tu ni lo ves). Por último, con tal de que el DataGrid pueda mostrar datos desde cualquier origen de datos, es necesario crear un objeto BindingSource. Este objeto está asociado al DataSet que se ha creado. De forma que el DataGrid lee del bindingSource, que a su vez lee del DataSet (para que me entiendas, tu en el DataSet puedes meter todas las tablas de tu base de datos, pero en el DataGrid sólo quieres ver la tabla de Clientes (por ejemplo) y sólo unos cuantos campos. Eso es lo que hace el BindingSource, coge del dataset sólo aquello que quieres que el DataGrid muestre).

    Bueno, es una explicación comprimida, pero espero que almenos te de una idea general.

    Tienes toda la información que necesites aquí:

    http://msdn.microsoft.com/es-es/library/cc656764.aspx

    Para el Tema de DataSets, DataAdapters, etc.. estaría bien que te miraras que es ADO.NET:

    http://msdn.microsoft.com/es-es/library/e80y5yhx.aspx

    Y bueno, nada más. Cualquier cosa por aquí estamos! ;)



    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marcado como respuesta Quim400 jueves, 20 de agosto de 2009 9:10
    jueves, 20 de agosto de 2009 9:01

Todas las respuestas

  • Hola Quim400,

    pues lamentablemente el control DataGrid que viene con el Compact Framework no permite ordenar las columnas de esa forma. Puedes buscar controles de terceros (ThirdParties) y seguro encontrarás controles DataGrid muy potentes.

    Por otro lado te explico el tema DataSets, BindingsSource, etc...

    Al asociar tu DataGrid con un origen de datos (seguramente una base de datos, aunque puedes asociarlo a otros origenes), lo que el diseñador hace de forma automática es generar un DataSet (es una representación en memoria de una base de datos relacional    ) con las tablas que le has indicado en el asistente. Este dataset se nutre de los datos que hay en la base de datos que especificaste en el asistente y para ello necesita de un DataAdapter (que normalmente tiene el nombre "tablaSeleccionadaTableAdapter". Este adapter es el objeto que permite al DataSet conectarse a la base de datos y obtener/actualizar los datos en ella (es decir, todos los cambios que tu hagas al dataset (añadir nuevas filas, actualizar valores de alguna tabla del dataset o eliminar registro de alguna tabla del dataset), el adapter los volcará a la base de datos de forma transparente (tu ni lo ves). Por último, con tal de que el DataGrid pueda mostrar datos desde cualquier origen de datos, es necesario crear un objeto BindingSource. Este objeto está asociado al DataSet que se ha creado. De forma que el DataGrid lee del bindingSource, que a su vez lee del DataSet (para que me entiendas, tu en el DataSet puedes meter todas las tablas de tu base de datos, pero en el DataGrid sólo quieres ver la tabla de Clientes (por ejemplo) y sólo unos cuantos campos. Eso es lo que hace el BindingSource, coge del dataset sólo aquello que quieres que el DataGrid muestre).

    Bueno, es una explicación comprimida, pero espero que almenos te de una idea general.

    Tienes toda la información que necesites aquí:

    http://msdn.microsoft.com/es-es/library/cc656764.aspx

    Para el Tema de DataSets, DataAdapters, etc.. estaría bien que te miraras que es ADO.NET:

    http://msdn.microsoft.com/es-es/library/e80y5yhx.aspx

    Y bueno, nada más. Cualquier cosa por aquí estamos! ;)



    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marcado como respuesta Quim400 jueves, 20 de agosto de 2009 9:10
    jueves, 20 de agosto de 2009 9:01

  • Muchisimas gracias Javier por tu amplia y rápida respuesta!

    estaba a punto de volverme loco.... buscando la forma de hacerlo...

    sobre lo de los dataset bindign etc... mirare el link que me has pasado... a ver si lo entiendo ;-)

    repito muchas gracias..

    Quim
    jueves, 20 de agosto de 2009 9:12