none
Al añadir la segunda columna en datagridview me añade 102 filas en blanco RRS feed

  • Pregunta

  • Buenas cada vez voy a cortando el proble en el datagridview ahora el problema que tengo es que al añadir la segunda columna me añade 102 filas en blanco

    gracias 

    Dgv_Herramientas.Columns.Add(CStr(Dgv_Herramientas.Columns.Count - 1), TextBox1.Text)
    
            Dim Documentoxml As XmlDocument
            Dim nodelist As XmlNodeList
            Dim node As XmlNode
            Documentoxml = New XmlDocument
            Documentoxml.Load(TextBox2.Text)
            nodelist = Documentoxml.SelectNodes("/" & ComboBox2.Text & "/" & ComboBox3.Text)
            Dim colum_com As Integer = Dgv_Herramientas.Columns.Count - 1
            Dim x As Integer = 0
    
            For Each node In nodelist
                Dgv_Herramientas.Rows.Add()
    
                Dim nombre = node.ChildNodes(ComboBox4.SelectedIndex).InnerText
    
    
                Me.Dgv_Herramientas.Rows(x).Cells(colum_com).Value = nombre
                
    
                If Me.Dgv_Herramientas.Rows(x).Cells(colum_com).Value = "" Then
    
    
    
                End If
                x += 1
    
                
                
    
    
            Next

    domingo, 6 de marzo de 2016 22:18

Respuestas

  • Ahora con este codigo solo me añade la primera columna se sale por lo visto del for 

    No se sale "por lo visto". Se sale porque tú expresamente has escrito la orden de que se salga (donde has puesto "Exit For"). Le has puesto un "IF" que dice que cuando llegue a la fila 102 se salga del bucle y no siga procesándolo.

    Seguramente no era esa la intención que tenías; lo que quieres no es que abandone el bucle, sino que siga procesando más nodos, y lo único que pasa es que quieres añadirlos en otra columna en lugar de seguir añadiendo filas. Te sobra el "Exit for".

    • Marcado como respuesta JETET lunes, 7 de marzo de 2016 10:39
    lunes, 7 de marzo de 2016 10:03

Todas las respuestas

  • Fíjate que has puesto esto:

     For Each node In nodelist
                Dgv_Herramientas
    .Rows.Add()

    Eso significa que añade una fila por cada nodo que existe en nodelist. Si en nodelist hay 112 nodos, te añadirá 112 filas.

    lunes, 7 de marzo de 2016 6:24
  • Si no Añado Dgv_Herramientas.Rows.Add() me lanza este error

    lunes, 7 de marzo de 2016 6:58
  • Cuando Añado la primera columna no me agrega las 10 filas vacias me lo agrega cuando pongo la segunda columna como muestra en estas 2 capturas

    lunes, 7 de marzo de 2016 7:06
  • Lógico. Eso es que cuando añades la primera columna solo has hecho los suficientes Dgv_Herramientas.Rows.Add() como para añadir las filas de esa columna. Y cuando añades la segunda columna, tu bucle sigue ejecutando la instrucción Dgv_Herramientas.Rows.Add() con lo que sigue añadiendo más filas (en lugar de limitarse a usar las filas ya existentes).
    lunes, 7 de marzo de 2016 7:36
  • Si no Añado Dgv_Herramientas.Rows.Add() me lanza este error [...]

    No, no es que no tengas que añadir el .Rows.Add. Lo que ocurre es que lo ejecutas DEMASIADAS veces. Tienes que reestructurar tu bucle, o meter uno o más "IF" de manera que se ejecute las veces justas (solo una vez por cada fila del Grid, no una vez por cada nodo del XML, ya que existen más nodos que filas).
    lunes, 7 de marzo de 2016 7:39
  • Ahora con este codigo solo me añade la primera columna se sale por lo visto del for 

    Dim colum_com As Integer = Dgv_Herramientas.Columns.Count - 1
            Dim x As Integer = 0
    
            For Each node In nodelist
                If Dgv_Herramientas.Rows.Count = 102 Then
                    Exit For
                Else
                    Dgv_Herramientas.Rows.Add()
                End If
               
    
                Dim nombre = node.ChildNodes(ComboBox4.SelectedIndex).InnerText
    
                Me.Dgv_Herramientas.Rows(x).Cells(colum_com).Value = nombre
                Label3.Text = nodelist.Count
                Label5.Text = Dgv_Herramientas.Rows.Count
    
               
    
                
                x += 1
    
                '
    
    
    
    
            Next

    lunes, 7 de marzo de 2016 8:14
  • Ahora con este codigo solo me añade la primera columna se sale por lo visto del for 

    No se sale "por lo visto". Se sale porque tú expresamente has escrito la orden de que se salga (donde has puesto "Exit For"). Le has puesto un "IF" que dice que cuando llegue a la fila 102 se salga del bucle y no siga procesándolo.

    Seguramente no era esa la intención que tenías; lo que quieres no es que abandone el bucle, sino que siga procesando más nodos, y lo único que pasa es que quieres añadirlos en otra columna en lugar de seguir añadiendo filas. Te sobra el "Exit for".

    • Marcado como respuesta JETET lunes, 7 de marzo de 2016 10:39
    lunes, 7 de marzo de 2016 10:03
  • Tan simple 

    1000 gracias ahora si que va bien

    lunes, 7 de marzo de 2016 10:39