Evitar que se ordenen la filas de DataGridView en VB2010

Iniciado por okik, 28 Enero 2015, 16:32 PM

0 Miembros y 1 Visitante están viendo este tema.

okik

Hola

Después de mucho curiosear no encontré nada. Iba a preguntar, pero encontré la solución por mí mismo. Es la siguiente:


Código (vbnet) [Seleccionar]
'//Se introducen los datos en el datagrid....

'//Desactivar 'reordenar las filas' al hacer clic en la cabecera de una columna
For x = 0 To DataGridView1.ColumnCount - 1               
      .Columns(x).SortModeDataGridViewColumnSortMode.NotSortable         
Next x



IMPORTANTE  :o: Debe introducirse DESPUÉS de introducir los datos en el datagrid. De lo contrario no funcionará, en cualquier caso, sólo en la primera columna.

Al poner "NotSortable" las cabeceras de las columnas no reaccionan al hacer clic, es decir no se comportan como botones.

Si quieres que las cabeceras hagan el efecto de clic (pero sin reordenar) entonces pones  "Programmatic"

Código (vbnet) [Seleccionar]
For x = 0 To DataGridView1.ColumnCount - 1               
      .Columns(x).SortModeDataGridViewColumnSortMode.Programmatic         
Next x



Si quieres que NO reordene en una determinada columna  pones el índice de la columna en .columns(índice):


DataGridView1.Columns(INDICE).SortModeDataGridViewColumnSortMode.NotSortable

ejemplo:

Código (vbnet) [Seleccionar]
DataGridView1.Columns(0).SortModeDataGridViewColumnSortMode.NotSortable


Espero que a álguien le sirva.

Shell Root

#1
Cita de: okik en 28 Enero 2015, 16:32 PMDespués de mucho curiosear no encontré nada.
Excelente! Se puede por código o por propiedades!

--

En las propiedades de cada columna, en la vista diseño, se encuentra la propiedad SortMode, la cual, si se selecciona NotSortable, evita que el usuario ordene las columnas al dar clic en la cabecera.

También se puede asignar mediante código

DataGridView1.Columns(0).SortMode = DataGridViewColumnSortMode.NotSortable
MIRA,
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.