|
Ordenar en un TableView - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: General (https://gambas-es.org/forum-4.html) +--- Tema: Ordenar en un TableView (/thread-1995.html) |
Ordenar en un TableView - guizans - 01-11-2025 Expongo el problema, a ver si alguien se le ocurre una forma eficiente de hacerlo. Tengo un GridView en el cual hay un listado de productos (latas, madera, harina, manzanas, etc) que recupero de una base de datos. El usuario puede seleccionar un producto de este listado y pulsando un botón, y lo mando a un TableView. El usuario puede modificar dos de los tres campos de cada productos, por ejemplo, volumen y peso. Es decir, lo que ve el usuario cuando le da al botón es una fila con productos, volumen y peso, y estos dos últimos son los que puede modificar. Hasta aquí no hay ningún problema. Lo que me gustaría es que haya dos botones al lado del TableView para subir o bajar los productos que se vean en el listado, es decir, que los pueda ordenar al gusto. Y aquí es donde no se me ocurre como plantear el problema. ¿Quizá con una serie de arrays que estén en el mismo orden que el TableView? Por que una cosa importante es el ID de cada producto, que no se muestra pero es importante, ya que tengo que guardar ese listado tal como el usuario lo ha ordenado en una base de datos. Le he estado dando vueltas y no se me ocurre nada. ¿Alguien me puede orientar? Muchas gracias. RE: Ordenar en un TableView - Harpo - 03-11-2025 A ver si lo he entendido bien, tiene un GridView-TableView con productos que muestra tres columnas: Productos, Volumen y Peso. Y quiere ordenar por la columna Productos. Además tiene otro valor asociado al producto, su ID, que no se muestra. Y al final quiere guardar la información del TableView en una base de datos, ordenado por el orden que aparece en el TableView. Pues depende del origen de los datos y en cierta medida de cómo cargue el TableView, normalmente se suele hacer con el evento Data. Si el origen de los datos es una base de datos se puede ordenar desde ahí con un "Order by". Si el origen es otro habría que ver cual para poder determinar la manera más eficiente. El volumen de datos es importante para las ordenaciones. Si tiene Productos y su ID puede usar una clase Collection, cargar como Key el producto y como Value el ID. Después tiene la posibilidad de ordenar los productos con "cProductos.Keys.sort()" y cargar el TableView. Le adjunto un ejemplo rápido para que vea posibilidades. En cuanto a grabar en base de datos el listado ordenado no le veo sentido. Una cosa es cómo lo guarda y otra cómo lo extrae. Aunque si usa Sqlite todas las tablas tienen un campo por defecto llamado "rowid", es un identificador único que se incrementa a cada fila que se graba. Si me da más detalle intentaré echarle una mano. Un saludo, Harpo.
|