none
Por que me agrega siempre el mismo registro RRS feed

  • Pregunta

  • no se por que me agrega siempre el mismo registro en el xml

    For Each node As Xml.XmlNode In Inicio.XmlNodeList_Cervezas
                    If node.ChildNodes(0).Name = "Id" Then ' DA EL NOMBRE DEL NODO
                        node.RemoveChild(node.FirstChild)
                    End If
                    For x = 0 To Inicio.DataGridView1.Rows.Count - 1
                        Dim col2 As Color = Inicio.DataGridView1.Rows(x).Cells(18).Style.BackColor
                        node.ChildNodes(0).InnerText = Inicio.DataGridView1.Rows(x).Cells(0).Value 'NOMBRE
                        node.ChildNodes(1).InnerText = Inicio.DataGridView1.Rows(x).Cells(1).Value 'ELABORACION
                        node.ChildNodes(2).InnerText = Inicio.DataGridView1.Rows(x).Cells(2).Value 'ESTILO
                        node.ChildNodes(3).InnerText = Inicio.DataGridView1.Rows(x).Cells(3).Value 'TIPO
                        node.ChildNodes(4).InnerText = Inicio.DataGridView1.Rows(x).Cells(4).Value 'DI
                        node.ChildNodes(5).InnerText = Inicio.DataGridView1.Rows(x).Cells(5).Value 'DF
                        node.ChildNodes(6).InnerText = Inicio.DataGridView1.Rows(x).Cells(6).Value 'ATENUACION
                        node.ChildNodes(7).InnerText = Inicio.DataGridView1.Rows(x).Cells(7).Value 'GADUACION
                        node.ChildNodes(8).InnerText = Inicio.DataGridView1.Rows(x).Cells(8).Value 'COLOR
                        node.ChildNodes(9).InnerText = Inicio.DataGridView1.Rows(x).Cells(9).Value 'EMBOTELLADO
                        node.ChildNodes(10).InnerText = Inicio.DataGridView1.Rows(x).Cells(10).Value 'MADURACION
                        node.ChildNodes(11).InnerText = Inicio.DataGridView1.Rows(x).Cells(11).Value 'HERVIDO
                        node.ChildNodes(12).InnerText = Inicio.DataGridView1.Rows(x).Cells(12).Value 'INICI FERMENTACION
                        node.ChildNodes(13).InnerText = Inicio.DataGridView1.Rows(x).Cells(13).Value 'FIN FERMENTACION
                        node.ChildNodes(14).InnerText = Inicio.DataGridView1.Rows(x).Cells(14).Value 'INICIO SECUNDARIO
                        node.ChildNodes(15).InnerText = Inicio.DataGridView1.Rows(x).Cells(15).Value 'FIN SECUNDARIO
                        node.ChildNodes(16).InnerText = Inicio.DataGridView1.Rows(x).Cells(16).Value 'INCIO DRYHOP
                        node.ChildNodes(17).InnerText = Inicio.DataGridView1.Rows(x).Cells(17).Value 'FIN DRYHOP
                        node.ChildNodes(18).InnerText = String.Format("{0}, {1}, {2}", col2.R, col2.G, col2.B) 'COLOR RGB
    
                    Next
    
                    '' ''node.ChildNodes(1).InnerText = "Cerveza vieja"
                    ' End If
                Next
    
                Inicio.XmlDocument_Cervezas.Save("DATOS\Cervezas2.xml")

    miércoles, 26 de julio de 2017 16:11

Respuestas

  • A ver así

        Dim x As Integer = 0
    
            For Each node As Xml.XmlNode In Inicio.XmlNodeList_Cervezas
                If x = Inicio.DataGridView1.Rows.Count Then
                    MsgBox("Datos Cargados!!")
                    Exit Sub
                End If
                If node.ChildNodes(0).Name = "Id" Then ' DA EL NOMBRE DEL NODO
                    node.RemoveChild(node.FirstChild)
                End If
    
                Dim col2 As Color = Inicio.DataGridView1.Rows(x).Cells(18).Style.BackColor
                node.ChildNodes(0).InnerText = Inicio.DataGridView1.Rows(x).Cells(0).Value 'NOMBRE
                node.ChildNodes(1).InnerText = Inicio.DataGridView1.Rows(x).Cells(1).Value 'ELABORACION
                node.ChildNodes(2).InnerText = Inicio.DataGridView1.Rows(x).Cells(2).Value 'ESTILO
                node.ChildNodes(3).InnerText = Inicio.DataGridView1.Rows(x).Cells(3).Value 'TIPO
                node.ChildNodes(4).InnerText = Inicio.DataGridView1.Rows(x).Cells(4).Value 'DI
                node.ChildNodes(5).InnerText = Inicio.DataGridView1.Rows(x).Cells(5).Value 'DF
                node.ChildNodes(6).InnerText = Inicio.DataGridView1.Rows(x).Cells(6).Value 'ATENUACION
                node.ChildNodes(7).InnerText = Inicio.DataGridView1.Rows(x).Cells(7).Value 'GADUACION
                node.ChildNodes(8).InnerText = Inicio.DataGridView1.Rows(x).Cells(8).Value 'COLOR
                node.ChildNodes(9).InnerText = Inicio.DataGridView1.Rows(x).Cells(9).Value 'EMBOTELLADO
                node.ChildNodes(10).InnerText = Inicio.DataGridView1.Rows(x).Cells(10).Value 'MADURACION
                node.ChildNodes(11).InnerText = Inicio.DataGridView1.Rows(x).Cells(11).Value 'HERVIDO
                node.ChildNodes(12).InnerText = Inicio.DataGridView1.Rows(x).Cells(12).Value 'INICI FERMENTACION
                node.ChildNodes(13).InnerText = Inicio.DataGridView1.Rows(x).Cells(13).Value 'FIN FERMENTACION
                node.ChildNodes(14).InnerText = Inicio.DataGridView1.Rows(x).Cells(14).Value 'INICIO SECUNDARIO
                node.ChildNodes(15).InnerText = Inicio.DataGridView1.Rows(x).Cells(15).Value 'FIN SECUNDARIO
                node.ChildNodes(16).InnerText = Inicio.DataGridView1.Rows(x).Cells(16).Value 'INCIO DRYHOP
                node.ChildNodes(17).InnerText = Inicio.DataGridView1.Rows(x).Cells(17).Value 'FIN DRYHOP
                node.ChildNodes(18).InnerText = String.Format("{0}, {1}, {2}", col2.R, col2.G, col2.B) 'COLOR RGB
                x = x + 1
            Next

    • Marcado como respuesta JETET jueves, 27 de julio de 2017 6:09
    miércoles, 26 de julio de 2017 17:47

Todas las respuestas

  • No se que intentas conseguir, peor por lo que veo recorres el DataGridView y colocas los valores, pero en la siguiente vuelve a cargar en el mismo destino el nuevo rown del Grid o sea que te queda grabado el último siempre.
    miércoles, 26 de julio de 2017 17:07
  • Si la idea es que por cada fila del grid agrege el valór al node, hazlo al revez primero recorre el DataGridView mediante for y dentro el for each cambiando el node. Es lo que entiendo al menos.
    miércoles, 26 de julio de 2017 17:17
  • A ver así

        Dim x As Integer = 0
    
            For Each node As Xml.XmlNode In Inicio.XmlNodeList_Cervezas
                If x = Inicio.DataGridView1.Rows.Count Then
                    MsgBox("Datos Cargados!!")
                    Exit Sub
                End If
                If node.ChildNodes(0).Name = "Id" Then ' DA EL NOMBRE DEL NODO
                    node.RemoveChild(node.FirstChild)
                End If
    
                Dim col2 As Color = Inicio.DataGridView1.Rows(x).Cells(18).Style.BackColor
                node.ChildNodes(0).InnerText = Inicio.DataGridView1.Rows(x).Cells(0).Value 'NOMBRE
                node.ChildNodes(1).InnerText = Inicio.DataGridView1.Rows(x).Cells(1).Value 'ELABORACION
                node.ChildNodes(2).InnerText = Inicio.DataGridView1.Rows(x).Cells(2).Value 'ESTILO
                node.ChildNodes(3).InnerText = Inicio.DataGridView1.Rows(x).Cells(3).Value 'TIPO
                node.ChildNodes(4).InnerText = Inicio.DataGridView1.Rows(x).Cells(4).Value 'DI
                node.ChildNodes(5).InnerText = Inicio.DataGridView1.Rows(x).Cells(5).Value 'DF
                node.ChildNodes(6).InnerText = Inicio.DataGridView1.Rows(x).Cells(6).Value 'ATENUACION
                node.ChildNodes(7).InnerText = Inicio.DataGridView1.Rows(x).Cells(7).Value 'GADUACION
                node.ChildNodes(8).InnerText = Inicio.DataGridView1.Rows(x).Cells(8).Value 'COLOR
                node.ChildNodes(9).InnerText = Inicio.DataGridView1.Rows(x).Cells(9).Value 'EMBOTELLADO
                node.ChildNodes(10).InnerText = Inicio.DataGridView1.Rows(x).Cells(10).Value 'MADURACION
                node.ChildNodes(11).InnerText = Inicio.DataGridView1.Rows(x).Cells(11).Value 'HERVIDO
                node.ChildNodes(12).InnerText = Inicio.DataGridView1.Rows(x).Cells(12).Value 'INICI FERMENTACION
                node.ChildNodes(13).InnerText = Inicio.DataGridView1.Rows(x).Cells(13).Value 'FIN FERMENTACION
                node.ChildNodes(14).InnerText = Inicio.DataGridView1.Rows(x).Cells(14).Value 'INICIO SECUNDARIO
                node.ChildNodes(15).InnerText = Inicio.DataGridView1.Rows(x).Cells(15).Value 'FIN SECUNDARIO
                node.ChildNodes(16).InnerText = Inicio.DataGridView1.Rows(x).Cells(16).Value 'INCIO DRYHOP
                node.ChildNodes(17).InnerText = Inicio.DataGridView1.Rows(x).Cells(17).Value 'FIN DRYHOP
                node.ChildNodes(18).InnerText = String.Format("{0}, {1}, {2}", col2.R, col2.G, col2.B) 'COLOR RGB
                x = x + 1
            Next

    • Marcado como respuesta JETET jueves, 27 de julio de 2017 6:09
    miércoles, 26 de julio de 2017 17:47
  • Gracais por contestar 

    el tu yo funciona 

    lo que no se por que el mio no

    miércoles, 26 de julio de 2017 19:06
  • Por que no recorro el DataGridView sino que modifico mediante x el valor del index, lo que queda medio en el aire es en caso de error variar la cantidad de node respecto a los rows del Grid, supongo que no debe ser posible por por la codificación, pero eventualmente fijate evaluar poner una restricción en caso de haber diferencia entre los rows del DataGrid y los items de la lista de nodos, que en la practicaq deberian tener el mismo número.

    Saludos espero haber ayudado

    miércoles, 26 de julio de 2017 19:20
  • Para entender la diferencia, el valor "x" solo aumenta cuando cambia en node, de esta manera cambia la fila del DataGridView también. Lo que tú hacías era en cada node recorrer todo el DataGridView sobre escribiendo una fila tras otra, en consecuencia quedaba "visible" el último registro

    • Editado Marcelo PF jueves, 27 de julio de 2017 3:22
    jueves, 27 de julio de 2017 3:20