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

Recorrer columnas datagridview

Estas en el tema de Recorrer columnas datagridview en el foro de .NET en Foros del Web. Hola a todos! tengo un problema recorriendo columnas de un datagridview, a ver si alguien me puede ayudar. El tema es que con este bucle ...
  #1 (permalink)  
Antiguo 09/09/2009, 02:36
 
Fecha de Ingreso: septiembre-2009
Ubicación: Galicia
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Pregunta Recorrer columnas datagridview

Hola a todos!

tengo un problema recorriendo columnas de un datagridview, a ver si alguien me puede ayudar. El tema es que con este bucle recorro las columnas sin problemas:

Código:
For Each columna As DataGridViewColumn In DataGridView1.Columns
     MsgBox(columna.Name.ToString)
 Next
El fallo que tengo es que si desplazo alguna columna arrastrando con el ratón (teniendo activada la propiedad "AllowUserToOrderColumns"), el bucle anterior no me contempla ese cambio.

¿Existe alguna propiedad para actualizar el grid y que me guarde esa ordenacion? He probado el refresh y el update, pero no me sale...

Bueno, espero haberme explicado bien y gracias de antemano!!
  #2 (permalink)  
Antiguo 09/09/2009, 15:08
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Recorrer columnas datagridview

Puedes probar a utilizar una variable que usas como contador para el "For" en vez de utilizar "For Each"

Código CODE:
Ver original
  1. Dim x as byte
  2. Dim columna as DataGridViewColum in DataGridView1.Colums
  3.  
  4. For x = 0 to columna.count - 1
  5.       MessageBox.show(columna(x).Name.ToString)
  6. next

Creo que asi te deberia funcionar... pruebalo y nos cuentas!
  #3 (permalink)  
Antiguo 10/09/2009, 01:27
 
Fecha de Ingreso: septiembre-2009
Ubicación: Galicia
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Recorrer columnas datagridview

Hola, tokero!

antes de nada gracias por responder.

He probado lo que pusiste pero la 2 línea da error, no la permite (Dim columna as DataGridViewColumn in DataGridView1.Columns)

De todas maneras, lo he intentado con un "for" en vez de con un "for each" como sugieres, pero me hace lo mismo, no contempla el cambio de orden de las columnas.

Código:
For x As Integer = 0 To DataGridView1.Columns.Count - 1
      MessageBox.Show(DataGridView1.Columns(x).Name.ToString)
Next
¿era esto lo que me decías? ¿alguna otra manera que se os ocurra?
  #4 (permalink)  
Antiguo 10/09/2009, 04:41
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Recorrer columnas datagridview

Disculpame!! Cuando escribi mi respuesta olvide el apartado de tu prengunta con respecto a la modificación con el raton...

Bien en ese caso despues de realizar una modificación lo mas logico para despues observar los datos como quieres es hacer un UPDATE para guardar las modificaciones y volver a cargar el dataGrid con los datos en las posiciones actuales!

Pero el UPDATE no lo tienes que hacer sobre el DataGrid. lo tendrias que hacer sobre la BDD a partir de los datos del DataGrid.
Y despues cargar de nuevo los datos a este!

Prueba esto aver que pasa y nos cuentas!
  #5 (permalink)  
Antiguo 10/09/2009, 05:51
 
Fecha de Ingreso: septiembre-2009
Ubicación: Galicia
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Recorrer columnas datagridview

Hola, tokero!

una vez más gracias por tu ayuda, pero creo que o no me explico bien o no entiendo lo que me quieres decir

no estoy cambiando nada de los datos, sólo el orden en el que se presentan. Por tanto, cuando me dices que actualice la base de datos, ¿a que te refieres? no he hecho ningún cambio de datos!!

a ver si ahora me explico bien: tengo un datagridview con lo siguiente (la consulta del dataset es "SELECT Cliente, Nombre, Edad FROM Clientes"):

Código:
Cliente   -   Nombre   -   Edad
1             Pepe         30
2             Manuel       20
Si hago cualquiera de los bucles que puse arriba me devuelve "Cliente-Nombre-Edad". Hasta aqui todo bien.

Pero si yo reordeno el grid, y lo dejo asi:
Código:
Cliente    -   Edad   -   Nombre  
1              30         Pepe
2              20         Manuel
el bucle me sigue devolviendo lo mismo, cuando yo quiero que me devuelva "Cliente-EDAD-Nombre", puesto que modifiqué el orden de las columnas.

No toqué el dataset, ni la base de datos, ni nada...

Por lo que la pregunta es si hay algun bucle que me contemple ese cambio, o si tengo que actualizar el datagrid.

espero haberme explicado bien ahora. Gracias nuevamente por el interés
  #6 (permalink)  
Antiguo 10/09/2009, 06:28
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Recorrer columnas datagridview

Ok :) Jejeje lo siento...

Bien una de dos.
Al estar recogiendo los datos de la base de datos que ya vienen en ese orden, siempre te los esta mostrando igual, vamos como vienen representados en la BDD.

O bien porque en la consulta tienes puesto ese orden...

Si realizas la consulta en el orden que quieres visualizar los datos... te los muestra como quieres?
Prueba a ver que pasa!!

Un saludo!
  #7 (permalink)  
Antiguo 11/09/2009, 00:55
 
Fecha de Ingreso: septiembre-2009
Ubicación: Galicia
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Recorrer columnas datagridview

Hola de nuevo!!

pues creo que seguimos sin entendernos, jejeje

efectivamente, si en el select cambio el orden me los va a imprimr contemplando el cambio. Pero yo lo que quiero es cambiar su orden en el datagridview en tiempo de ejecucion. Pincho en el Header de una columna y la desplazo a otra posicion arrastrándola. Es entonces cuando quiero que me contemple el cambio.

Saludos!!
  #8 (permalink)  
Antiguo 11/09/2009, 05:19
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Recorrer columnas datagridview

Ok!

En ese caso se escapa a mis conocimientos... no se si es posible realizar ese cambio en tiempo de ejecución y que quede reflejado!

Lo siento!! aver si alguno por aqui te puede dar la respuesta!
Mucha suerte!
  #9 (permalink)  
Antiguo 11/09/2009, 10:41
 
Fecha de Ingreso: agosto-2007
Mensajes: 25
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Recorrer columnas datagridview

amigo alguna vez... igual me paso

esta fue mi solución

Código:
DataGridViewColumn col = null;
            for (int i = 0; i < grdPrueba.Columns.Count; i++)
            {
                if (i == 0)
                {
                    MessageBox.Show(grdPrueba.Columns.GetFirstColumn(DataGridViewElementStates.Visible).HeaderText);
                    col = grdPrueba.Columns.GetFirstColumn(DataGridViewElementStates.Visible);
                    continue;
                }
                MessageBox.Show(
                    grdPrueba.Columns.GetNextColumn(col, DataGridViewElementStates.Visible,
                                                    DataGridViewElementStates.None).HeaderText);
                col = grdPrueba.Columns.GetNextColumn(col, DataGridViewElementStates.Visible,
                                                      DataGridViewElementStates.None);
            }

muy muy rustico pero se logra lo que necesitas...!!!

si alguien conoce algo mejor

igual me podria servir a mi..!!!

saludos...
  #10 (permalink)  
Antiguo 14/09/2009, 02:02
 
Fecha de Ingreso: septiembre-2009
Ubicación: Galicia
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Recorrer columnas datagridview

Hola, kornneo!

muchas gracias, funciona a la perfección!!! la verdad es que me has sacado un peso de encima, que llevaba tiempo detrás de este problema...

Dejo el código adaptado a vb .net, por si a alguien le sirve:

Código:
Dim col As DataGridViewColumn = Nothing
Dim i As Integer = 0

Do While (i < DataGridView1.Columns.Count)
     If i = 0 Then
          col = DataGridView1.Columns.GetFirstColumn(DataGridViewElementStates.Visible)
     Else
          col = DataGridView1.Columns.GetNextColumn(col, DataGridViewElementStates.Visible, DataGridViewElementStates.None)
     End If

     MsgBox(col.Name.ToString)
     i = i + 1
Loop
Saludos y gracias nuevamente!!!
  #11 (permalink)  
Antiguo 14/09/2009, 09:35
 
Fecha de Ingreso: agosto-2007
Mensajes: 25
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Recorrer columnas datagridview

hola amigo que bueno que te sirvio...

saludos...!!!
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




La zona horaria es GMT -6. Ahora son las 11:05.