Principales respuestas
Evitar el Sort Ascending o Descending al pulsar sobre la Columna de DataGridView

Pregunta
-
Hola amigos, tengo un DataGridView y me gustaría que al pulsar sobre la cabecera de cada columna, evitar que ordene los datos y pueda seleccionar todos los registros de dicha columna.
No sé que propiedad tendría que deshabilitar mediante código o mediante el panel de propiedades.
Así me gustaría agregarle un context menú a la columna para trabajar con todos los datos de dicha columna.
Gracias.
Francisco J.
Respuestas
Todas las respuestas
-
Hola Francisco,
¿Como haces el databinding?, si lo haces desde tiempo de diseño debes seguir los siguientes pasos.
1º. Comprobar en la colección de columnas (propiedad Columns, pinchas en coleccion), que cada una de ellas tiene la propiedad SortMode a NotSortable, esto hace que no se ordenen cuando pinchas en la columna.
2º. Que la propiedad del DataGridView SelectionMode esté a ColumnHeaderSelect. Con esto consigues que la selección sea por columna, pero hace que no se pueda seleccionar la fila
3º. Añadir un ContextMenuStrip (por defecto se llamará ContextMenuStrip1), luego el DataGridView tiene una propiedad llamada ContextMenuStrip, pues lo asocias con éste que has creado. Con esto tendrías un menú contextual para el grid.
Si el databinding lo haces desde código, pues es hacer lo mismo pero desde código.
Espero que te haya servido.
- Propuesto como respuesta kakaroto2012 miércoles, 25 de noviembre de 2009 21:48
-
Hola Carmen, muchas gracias voy a probarlo.
Pues te comento, lo que tengo es una capa geográfica, ya que trabajo con Sistemas de Información Geográfica (SIG) y la capa geográfica se refiere a entidades espaciales vinculadas a datos alfanuméricos (en formato DBF). El formato se llama Shapefile.
Este fichero tiene dicha base de datos en formato DBF y yo lo que quería hacer era vincular los datos sin acudir a gestion de Base de Datos, total el código que usé es el siguiente:
Code SnippetPrivate
Sub PoblarTabla()shp = mainMap.get_GetObject(Legend1.SelectedLayer)
Dim m_DataTable As DataTable Dim m_field As MapWinGIS.Fieldm_DataTable =
New DataTable() Dim m_datacolumn As DataColumn Dim m_datarow As DataRowm_datacolumn =
New DataColumnm_field = shp.Field(fld)
m_datacolumn.ColumnName = m_field.Name
m_DataTable.Columns.Add(m_datacolumn)
NextFor shp1 As Integer = 0 To shp.NumShapes - 1
m_datarow = m_DataTable.NewRow
For fld As Integer = 0 To shp.NumFields - 1
m_datarow(fld) = shp.CellValue(fld, shp1)
Next
m_DataTable.Rows.Add(m_datarow)
NextToA.DataGridView1.DataSource = m_DataTable
End SubEse es el código que opera con cada entidad espacial y las columnas del dbf para pasarlo a un DataTable y posteriormente usar ese datatable como recurso para el DataGridView. Pero no sabia como hacer lo de la columna, y al escoger en la propiedad Columns - Colección. No me sale nada al no estar vinculado a datos. Probaré mediante diseño.
Gracias.
Un saludo.
Francisco J.
-
-
Conseguido mediante código jejeje:
Pero ahora tengo otro problema, ¿no es posible tener los dos tipos de selección al mismo tiempo? Es decir, si quiero seleccionar tanto con la cabecera del campo todas las entidades, como al seleccionar una entidad, todos los campos que la componen, había probado lo siguiente pero no me permite.
Code SnippetDim
DataGridView1.Columns(col).SortMode = DataGridViewColumnSortMode.NotSortable
NextY lo que probé para cambiar el SelectionMode fue lo siguiente:
Code SnippetDataGridView1.SelectionMode = DataGridViewSelectionMode.ColumnHeaderSelect And DataGridView.SelectionMode.RowHeaderSelect
Gracias de antemano.
Francisco J.
-
-
-
-