none
Recorre DataGridview RRS feed

  • Pregunta

  • Saludos.

    tengo un datagridview que se llena y pone un checkbox,   esto lo hace bien, pero a la hora de verificar lo seleccionado

     foreach (DataGridViewRow Linea in DGV_PerPlan.Rows)
                          {
                              if (Convert.ToBoolean(Linea.Cells[0].Value))
                                {
                                    IdEmPlan = DGV_PerPlan.CurrentRow.Cells["Nom"].Tag.ToString();
                                                             }
                          }

    solo me escoge desde la 2 fila seleccionada, si escojo la primera , no  me la toma.

    alguien me podria indicar como soluciono esto???

    jueves, 30 de noviembre de 2017 18:47

Respuestas

Todas las respuestas

  • ¿En que controlador de evento se encuentran las líneas de código que adjuntas?

    Por otro lado, si una fila tiene marcada la casilla de verificación, asignas, a la variable 'IdEmPlan', el valor de celda de la fila actualmente seleccionada, mas no la que corresponde con la fila de la iteración, ¿es eso correcto?

    if (Convert.ToBoolean(Linea.Cells[0].Value))
    {
    	IdEmPlan = Linea.Cells["Nom"].Tag.ToString();
    }

    jueves, 30 de noviembre de 2017 19:47
  • efectivamente capturo el valor de la celda de la fila seleccionada, pues es ese el que me interesa

    en cuanto al controlador de eventos esta no se encuentra dentro de un datagridview_clic ,  sino que dentro de un evento boton_clic
    jueves, 30 de noviembre de 2017 20:06
  • ¿A qué llamas la "fila seleccionada"? ¿a la fila que contiene la celda activa (CurrentRow)? ¿a la fila que tiene la casilla de verificación marcada?

    ¿Podrías abrir un poco más el contexto del problema?

    jueves, 30 de noviembre de 2017 21:35
  • al la fila seleccionada que tiene la casilla de verificacion marcada
    jueves, 30 de noviembre de 2017 21:39
  • Lo siento, basado en el código que adjuntas no hay motivo evidente ni razonable para pensar que la evaluación no resulte verdadera cuando itera por una fila cuya casilla de verificación está marcada.

    foreach (DataGridViewRow Linea in DGV_PerPlan.Rows)
    {
    	if (Convert.ToBoolean(Linea.Cells[0].Value))
    	{
    		//Si la casilla de verificación está marcada...
    	}
    }

    jueves, 30 de noviembre de 2017 21:49
  • hola

    pero si hay mas de una seleccion al asignar el valor a la variable solo quedara una sola asignada, si seleccionas solo un unico checkbox tampoco funciona?

    sino necesitas una lista

    List<string> IdEmPlans = new List<string>();
    
    foreach (DataGridViewRow Linea in DGV_PerPlan.Rows)
    {
    	if (Convert.ToBoolean(Linea.Cells[0].Value))
    	{
    		string Nom = Linea.Cells["Nom"].Tag.ToString();
    		IdEmPlans.Add(Nom);
    	}
    }

    si pones un breakpoint valida cuantos items agrega a la lista

    ademas porque usas DGV_PerPlan.CurrentRow.Cells["Nom"] cuando deberias usar Linea que es la row que iteras

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 30 de noviembre de 2017 22:22
  • Solucionado , tuve que recorre el datagridview con un for simple ,  ademas de cambiar algunos parametros de lugar.

    Gracias

    • Marcado como respuesta Rodrigo Menares viernes, 1 de diciembre de 2017 15:29
    viernes, 1 de diciembre de 2017 15:29