none
Como ordenar un datagrid o un listbox arrastrando y soltando elementos RRS feed

  • Pregunta

  • Hola a todos:

    Necesito un poco de consejo, porque estoy un poco perdida sobre que es lo mejor que tengo que utilizar.

    Estoy realizando una aplicación web con silverlight 4. El objetivo es mostrar datos y que el usuario los pueda reordenar a su gusto y luego se guardará el orden que ha elegido el usuario

    Los datos los obtengo en un array, y no se el numero que me pueden venir.  He pensado que la mejor manera es mostrarlos en un datagrid o un listbox pero no estoy muy familiarizado con ellos y no se como pasar del array a una colleccion eficientemente y como puedo implentar la accion de coger un elemento y poder cambiarlo de orden en la lista de datos algo parecido a la propiedad MouseDragElementBehavior.

    Muchas Gracias por adelantado

    domingo, 17 de octubre de 2010 17:10

Todas las respuestas

  • Hola Elinel.

    Bueno, parece que buscas muchas cosas, pero todas dependen de tus datos y de donde los quieras mostrar.

    Hay que tener en cuenta que tanto WPF como Silverlight, por defecto los controles no contienen los datos, tan solo realizan una visualizacion de su fuente de datos.

    Por otra parte cualquier coleccion es buena para establecer una fuente de datos, desde un array hasta una lista generica, pasando por cualquier IEnumerable generico (que es utilizado por linq).

    Si especificas los datos que quieres representar, te podremos ayudar mejor a elegir control y otras acciones.

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    lunes, 18 de octubre de 2010 6:18
  • Hola muchas gracias por contestar:

    Bueno los datos que quiero representar son objetos que se componen de una imagen y cadena de caracteres. Y lo que tengo es un array de objetos, y ese array es el que quiero mostrar y dar la posibilidad al usuario que pueda reordenar los objejos como el quiera. Y finalmente guardar el orden en que el hayan quedado los objetos.

    Es eso posible? 

    Ahora mismo tampoco he conseguido que ni datagrid ni listbox visualicen el array.

     

     

    lunes, 18 de octubre de 2010 9:01
  • Hola Elinel.

    vale, por lo que veo, tu mejor opciones es crearte un ListView donde puedes enlazar un modelo con una imagen y un texto muy facilmente, el grid es para otras cosas mas especificas y el ListBox es bastante mas basico tambien, aunque con los 3 se puede hacer, personalmente te recomiendo un ListView.

    Como hay muchos ejemplos de uso en internet, te pongo una pagina que hace casi todo lo que quieres hacer, solo le falta la ordenacion:

    http://zameb.wordpress.com/2009/11/10/uso-del-control-wpf-listview-%E2%80%93-parte-2/

    La ordenacion una vez lo tengas es bastante facil, aunque se puede implementar de varias formas. Cuando tengas creado el listView con las imagenes comentalo y te ayudo con la ordenacion.

    Por otra parte el orden no se puede guardar, me explico, en un objeto si que se puede guardar el orden de los elementos, ordenarlos y demas, pero en un almacen de datos como una BBDD tu no tienes ese control sobre los elementos, tan solo los guardas y luego al obtenerlos los ordenas como quieras.

    Si tienes problemas con el ejemplo para implementarlo comentalo.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    martes, 19 de octubre de 2010 12:37
  • ¡Hola!

    Buen aporte de David.

    Para guardarlos en ese orden deberías de tener un campo en la base de datos que sea un indice. Esa columna podrías almacenarla en el tag del elemento item del ListBox. A medida que ordenas actualizas ese tag y una vez terminada la ordenación pasas esos indices a la base de datos. Recuerda que a la hora de cargar debes de cargar por ese orden del indice.

    Pregunta para David. ¿Se puede serializar el control y grabarlo en la base de datos para luego recuperar esa serialización?

    Saludos,

     

    martes, 19 de octubre de 2010 19:24
  • Hola Corsario.

    La verdad es que no se puede, para serializar una clase, esta debe tener el atribute '[Serializable]' y los objetos heredados de FrameworkElement no disponen de este atributo, de modo que la unica forma seria guardar los controles en un XML o XAML y guardarlo en la BBDD.

    Si es necesario siempre se puede hacer algo, aunque no sea lo ideal.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    jueves, 21 de octubre de 2010 14:05
  • ¡Hola!

    Interesante, además, es una buena idea ;-)

     

     

    jueves, 21 de octubre de 2010 15:39