una titulo repetir que pasos movil mostrar los indique imprimir hacer fin filas fila fijo encabezados encabezado como columnas columna colocar baje bajar c# winforms datagridview

c# - titulo - ¿Cómo puedo ordenar los encabezados de las columnas en una cuadrícula de datos alfabéticamente? do#



mostrar encabezado en excel (3)

No puedo decir si su problema es que SortedColumnNames no está ordenado correctamente (lo que no es), o si las columnas tienen asignado un orden diferente al que aparece en la lista.

Si es el último, podría ser porque está modificando el orden de los elementos en la colección a medida que lo itera. Aunque no veo que eso ocurra en ninguna de las pruebas que estoy ejecutando.

Solo como regla general, no me meto con la membresía o el orden de una colección sobre la que estoy iterando. Implemento la clasificación de columnas de esta manera:

void SortDataGridViewColumns(DataGridView dgv) { var list = from DataGridViewColumn c in dgv.Columns orderby c.HeaderText select c; int i = 0; foreach (DataGridViewColumn c in list) { c.DisplayIndex = i++; } }

Tengo una lista ordenada que contiene los encabezados de columna, ¿cómo reorganizo mi datagridview para que esté en el mismo orden que mi lista ordenada?

He intentado con el siguiente código, pero esto no siempre funciona, algunas columnas no están ordenadas correctamente. Gracias por cualquier ayuda en esto.

sortedColumnNames.Sort(); foreach (DataGridViewColumn col in dataGridView1.Columns) { col.DisplayIndex = sortedColumnNames.IndexOf(col.HeaderText); }

ordenadosColumnNames: atenas crete corfu kefalonia mykonos rhodes santorini skiathos zante


Parece que debería funcionar. Acabo de escribir una aplicación rápida para probar y funcionó bien. ¿Puedes determinar exactamente cuándo está funcionando y cuándo no? Cuando dices que no funcionan, ¿siempre son las mismas columnas las que están fuera de servicio?


Puedes hacerlo de esta manera:

  1. Agregue todas las columnas a List tmpColumns
  2. Eliminar todas las columnas de dgv.Columns
  3. Ordenar tmpColumnas por nombre
  4. Agregue columnas a dgv.Columns desde tmpColumns y establezca DisplayIndex en los valores siguientes 0,1,2 y así sucesivamente.

No es ideal, pero funciona.