Foros del Web » Programación para mayores de 30 ;) » .NET »

Seleccionar varias filas dataGridView

Estas en el tema de Seleccionar varias filas dataGridView en el foro de .NET en Foros del Web. Hola a todos, soy nuevo y quisiera haceros una consulta a ver si me podeis ayudar: Tengo una aplicación con Visual 2008 en la que ...
  #1 (permalink)  
Antiguo 30/10/2009, 04:39
 
Fecha de Ingreso: octubre-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Seleccionar varias filas dataGridView

Hola a todos, soy nuevo y quisiera haceros una consulta a ver si me podeis ayudar:
Tengo una aplicación con Visual 2008 en la que dispongo de un dataGridView al que se le van cargando filas para esportarlas a Excel. El dataGridView tiene una columna que es un check box, se supone que al hacer clic sobre el check box, éste se marca y selecciona la fila completa. Pero no se como hacer para poder seleccionar mas de una fila pulsando varios checks y que se queden todas las que pulse seleccionadas (con una fila seleccionada, marco otro check y se deselecciona la anterior para seleccionar la nueva), no se si me he explicado bien, por cierto la propiedad multiSelect del dataGridView la tengo a True.
Gracias de antemano y un saludo.
  #2 (permalink)  
Antiguo 30/10/2009, 05:29
 
Fecha de Ingreso: junio-2008
Ubicación: Valencia
Mensajes: 152
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Seleccionar varias filas dataGridView

cada vez que marques un check:
gridMed.Rows(indice).Selected = True
pero debes tener el SelectionMode = DataGridViewSelectionMode.FullRowSelect

espero te sirva
  #3 (permalink)  
Antiguo 30/10/2009, 05:39
 
Fecha de Ingreso: octubre-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Respuesta: Seleccionar varias filas dataGridView

muchas gracias por responder, lo he probado y sigue deseleccionandome la anterior para marcar la nueva fila

el codigo lo meto en el evento 'cellContentClick'
  #4 (permalink)  
Antiguo 30/10/2009, 06:22
 
Fecha de Ingreso: junio-2008
Ubicación: Valencia
Mensajes: 152
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Seleccionar varias filas dataGridView

Lo siento pensaba que eso serviria.
He estado buscando y probando pero no he encontrado nada.
Si lo descubro te lo escribo.

Una soluciona que se me ocurre es que pintes el fondo de la fila asi parecera que estan seleccionadas.
  #5 (permalink)  
Antiguo 30/10/2009, 09:05
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 15 años, 2 meses
Puntos: 16
Respuesta: Seleccionar varias filas dataGridView

En realidad ese código que puso Kyha funciona, sólo que en ese evento no o al menos no para lo que tu esperas ya que al seleccionar una fila obviamente se seleccionará esta y se perderá la selección de la anterior.
Lo que podrías hacer es guardar en un arreglo el índice que se ha seleccionado y ante una nueva selección de fila establecer la propiedad selected en True, algo así:
Código vb.net:
Ver original
  1. 'Variable visible para toda la clase
  2.     Dim filas_sel As New List(Of Integer)
  3.     'Método para seleccionar una fila
  4.     Private Sub seleccionarFila(ByVal indice As Int32)
  5.         Me.dgvdatos.Rows(indice).Selected = True
  6.     End Sub
  7.    'Evento CellContentClick
  8.         For i As Int32 = 0 To Me.filas_sel.Count - 1
  9.             Me.seleccionarFila(Me.filas_sel(i))
  10.         Next
  11.         If e.ColumnIndex = 2 Then
  12.             Me.filas_sel.Add(e.RowIndex)
  13.         End If

Antes de comprobar si se ha hecho click sobre la columna de índice 2 (es la que yo tengo como checkbox) recorro una lista filas_sel (declarada al inicio de la clase) que tiene el índice de las filas seleccionadas hasta el momento.
Luego se comprueba que la fila seleccionada sea la que tiene el checkbox y se guarda en el arreglo el índice de la fila para que se mantenga seleccionada.

Espero te sirva.
PD:Según tu aplicación creo que puedes manejarlo de una mejor manera, pero como primera idea creo que puede ayudarte en algo
__________________
Eduardo Peredo
Wigoin

Última edición por eperedo; 30/10/2009 a las 09:13
  #6 (permalink)  
Antiguo 30/10/2009, 10:11
 
Fecha de Ingreso: octubre-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Respuesta: Seleccionar varias filas dataGridView

muchas gracias eperedo por el interés pero sigue desmarcándomelas, casi que estoy a punto de dejarlo por perdido.
Exporto las lineas a excel usando el check, pero pensaba que si se selccionan pues se ve más claro en el grid. una vez mas gracias.
  #7 (permalink)  
Antiguo 30/10/2009, 10:18
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 15 años, 2 meses
Puntos: 16
Respuesta: Seleccionar varias filas dataGridView

Estás seguro que aplicaste bien el código? Te dejo este video para que veas si es lo que necesitas.

__________________
Eduardo Peredo
Wigoin
  #8 (permalink)  
Antiguo 31/10/2009, 09:15
 
Fecha de Ingreso: octubre-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Respuesta: Seleccionar varias filas dataGridView

tenias razón eperedo si que funciona ese código, lo que pasa es q en el caso que marques una fila con el check y desees desmarcarla (por que te has equivocado de fila por ejemplo) la línea se queda seleccionada.

he intentado con un

if me.datagridview1.rows(e.rowindex).cell(7).value= true then

pero resulta q hasta que no termina el evento cellContentClick, no se cambia el estado del check, luego siempre me lo coge con el check a true...
  #9 (permalink)  
Antiguo 31/10/2009, 09:35
 
Fecha de Ingreso: octubre-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Respuesta: Seleccionar varias filas dataGridView

For i As Int32 = 0 To Me.filas_sel.Count - 1
Me.seleccionarFila(Me.filas_sel(i))
Next

If Me.filas_sel.Contains(e.RowIndex) Then
Me.DataGridView1.Rows(e.RowIndex).Selected = False
Me.filas_sel.Remove(e.RowIndex)
Else
If e.ColumnIndex = 7 Then
Me.filas_sel.Add(e.RowIndex)
End If
End If


Al fin lo conseguí!!!!!!!!!!!!!!!!
gracias por vuestro interés y a eperedo por el 90% de esto jajaja
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:46.