2010-04-05 15 views
5

Tengo un DataGridView vinculado a un DataSet. Tiene columnas DateCreated, Weight, DateUsed. Esas tres columnas no ocupan mucho espacio horizontal en DataGridView que está casi a pantalla completa. ¿Es posible que esas columnas vuelvan a la parte superior si la vista es lo suficientemente amplia para admitir un segundo grupo de esas columnas? Por lo tanto, en el encabezado se leerá FechaCreated, Weight, DateUsed, DateCreated, Weight, DateUsed. Luego, cuando se hace clic en una fila, solo se resaltarán 3 celdas, no las seis. ¿Hay algo que pueda proporcionar esta funcionalidad?Multi "columna" DataGridView C#

+1

Windows Forms o ASP.NET? –

+0

Windows Forms C# – Wesley

Respuesta

2

No sé nada de eso de la caja.

Puede crear ese efecto usted mismo. Debería desacoplar los datos reales de la presentación de los datos. En lugar de una única fila DataRow por cuadrícula, deberá unirlas para mostrar varias filas en una sola fila.

Así que su método de ayuda podría hacer lo siguiente:

  • comparar el ancho de la DataGridView al número de filas
  • determinar cuántos DataRows columnas serían visibles
  • construir una nueva DataTable con supletoria columna fija para representar cada columna
    • Ejemplo: DateCreated1, Peso1, DateUsed1, DateCreated2, Peso2, DateUsed2, etc.
  • pueblan el DataTable con el conjunto de datos original
  • Enlace el DataGridView a la nueva tabla

Algunas consideraciones: los usuarios pueden ordenar los datos? Si es así, tendrás que escribirlo tú mismo.

¿Es necesario ser capaz de añadir nuevas filas utilizando este punto de vista? Eso suena muy difícil con este tipo de vista.

+0

No, los usuarios no pueden ordenar, agregar ni eliminar filas. Gracias por tu contribución. Aunque no es exactamente lo que estoy buscando, esta parece ser la forma en que voy a tener que ir. – Wesley

0

Es bastante difícil entender a qué se refiere exactamente, pero estoy seguro de que se puede hacer con algún tipo de funcionalidad JS, donde calcula el ancho de las columnas y el ancho del navegador/pantalla y ajusta DataGridView en consecuencia. Puede tener pocos problemas para establecer el ancho de celdas "td", por lo que cambiar a proveedores de CSS y representarlos como div y span podría ser una opción.

+0

Esta no es una aplicación web, solo la versión estándar de la aplicación Windows Forms. – Wesley

0

Puede ser cursi, pero solo pegue dos DGV uno al lado del otro, gire la barra de desplazamiento vertical izquierda de DGV, vincule cada DGV con la mitad de los datos, y controle ambos con la barra de desplazamiento derecha de la DGV.

Aparte de eso estoy pensando que necesita un poco de codificación para obtener una sola DGV a hacer lo que quiera.

1

que se dan cuenta de que envió esta pregunta en abril, y por lo que probablemente ya ha encontrado una solución o de lo contrario se trasladó a otra cosa. Sin embargo, me escribió recientemente un control que, básicamente, sólo lo que usted describe, y se puede descargar libremente desde BitBucket aquí:

https://bitbucket.org/dtao/taocontrols/downloads

Screenshot of SplitDataGridView control

Si está interesado, dan el control de un SplitDataGridView disparó y dime qué piensas.

Cuestiones relacionadas