los pasos son:
- Crear un formulario y agregar lo siguiente;
- 2 datagridview
- 1 button
- El resultado será
- Crear una clase llamada XML, la cuál tendrá el siguiente código;
Imports System.IO
Imports
System.Xml
Public Class xml
#Region "Members"
Private
xmlDataSet As New
DataSet
'Dirección de donde se creará el archivo, en este caso, es donde se ejecuta la aplicación.
Private
xmlFile As String
= Application.StartupPath + "\clientes.xml"
Private
columns() As String ' Nombre de las columnas
#End Region
Public Sub WriteXmlToFile(ByVal lista As DataGridView)
Try
Dim ds As New DataSet
ds = ConvertToTable(lista)
If ds Is Nothing Then
Exit Sub
End If
If File.Exists(xmlFile) = True Then 'si existe el archivo
File.Delete(xmlFile) 'Borrar el archivo
End If
' Crear el FileStream para escribir
Dim myFileStream As New System.IO.FileStream(xmlFile, System.IO.FileMode.Create)
' crear un XmlTextWriter con el fileStream.
Dim myXmlWriter As New System.Xml.XmlTextWriter(myFileStream, System.Text.Encoding.Unicode)
' escribir los datos con el método WriteXml
ds.WriteXml(myXmlWriter)'Crear el archivo
Catch ex As Exception
MessageBox.Show(Err.Description)
Finally
myXmlWriter.Close()
End Try
End Sub
Public Sub LoadProcess(ByRef dtv As DataGridView)
If File.Exists(xmlFile) = False Then
Exit Sub
End If
xmlDataSet = ReadXML() 'Se le asigna un dataset
Dim filas As Integer = xmlDataSet.Tables(0).Rows.Count - 1
If filas < 0 Then
Exit Sub
End If
colum()
dtv.Rows.Clear() 'Limpiar las filas del grid
For i As Integer = 0 To filas 'Recorrer filas del dataset
Dim nombre As String = xmlDataSet.Tables(0).Rows(i)(columns(0))
Dim apellido1 As String = xmlDataSet.Tables(0).Rows(i)(columns(1))
Dim apellido2 As String = xmlDataSet.Tables(0).Rows(i)(columns(2))
dtv.Rows.Add(nombre, apellido1, apellido2)
Next
End Sub
'Convertir las filas del datagridview en un dataset
Private Function ConvertToTable(ByVal
dgv As DataGridView)
As DataSet
Dim dt As New DataTable()
ReDim columns(2)
columns(0) = "Nombre"
columns(1) = "Primer apellido"
columns(2) = "Segundo apellido"
'agregar las columnas al datatable
dt.Columns.Add(columns(0))
dt.Columns.Add(columns(1))
dt.Columns.Add(columns(2))
'agregar
las filas del datagridview
For Each row As DataGridViewRow In
dgv.Rows
Dim
rowdt As DataRow
= dt.NewRow()
rowdt(columns(0)) = Convert.ToString(row.Cells(0).Value)
rowdt(columns(1)) = Convert.ToString(row.Cells(1).Value)
rowdt(columns(2)) = Convert.ToString(row.Cells(2).Value)
dt.Rows.Add(rowdt) 'agregar la fila al datatable
Next
Dim ds As New DataSet
ds.Tables.Add(dt) 'asignar el datatable al dataset
Return ds
End Function
' Cargar los datos del archivo XML a un dataset
Private Function ReadXML() As
DataSet
Dim ds As New DataSet
Dim
FileSXML As New
System.IO.FileStream(xmlFile, System.IO.FileMode.Open)
Try
ds.ReadXml(FileSXML)
ReadXML = ds
Return
ds
Catch
ex As Exception
MessageBox.Show(Err.Description)
Finally
FileSXML .Close()
End Try
End Function
End Class
4. Una vez hecho lo anterior, en el evento click de los botones se digita el siguiente código;
Muy buena tu explicación, aunque estoy buscando cargar un Solo datagridview con distintos campos de tablas relacionadas en access.
ResponderEliminarUn saludo
Gracias..me parece que te puedo ayudar, déjame buscar entre unos proyectos que tengo!!
EliminarOla como estas, me podrias hacer el favor de enviarme el proyecto a mi correo, porque he tratado de correrlo y me da algunos errores, no se porque. gracias
ResponderEliminarllanero012@hotmail.com
ola, te cuento que solucione el problema. estoy muy agradecido contigo por ese código.
Eliminarme parece la forma mas sencilla de guardar datos de configuración del programa que estoy haciendo. ahora solo me queda ver que tantos datos podría llegar a almacenar, es decir cuantas filas y columnas de un datagrid.
chao y que estés bien!!!
Me alegro que te funciono..!! me complace saber que estoy aportando a la educación de colegas!!!
EliminarMuy buen aporte !!! tu codigo y tu explicación esta perfectamente ordenada y se entiende muy bien, suerte y gracias.
ResponderEliminarBuenas tardes srta, muy bueno e interesante, quería aprovechar para consultarle, sabe como se puede pasar datos de un datagrid a un dataset y de este dataset ponerlo en un otro datagrid? le agradecería bastante si pudiera ayudarme con ese problema, gracias y saludos cordiales.
ResponderEliminarHola esta muy bien pero ando buscando lo contrario, una vez leido el archivo excell y tenelo en un datagridview, exportar cada fila con sus capos formando un xml, donde cada nodo lo tomaria de cada fila hasta recorer las n filas.
ResponderEliminarSi hicistes algo similar me cuentas.
Saludos.
Buenos dias por si acaso no tienes el codigo en c#??
ResponderEliminarMuy buen aporte.
ResponderEliminarQueria hacer una consulta, para que funciona el metodo colum() en el procedimiento loadprocess
.....
Dim filas As Integer = xmlDataSet.Tables(0).Rows.Count - 1
If filas < 0 Then
Exit Sub
End If
**** colum() ************
dtv.Rows.Clear() 'Limpiar las filas del grid
For i As Integer = 0 To filas 'Recorrer filas del dataset
Dim nombre As String = xmlDataSet.Tables(0).Rows(i)(columns(0))
.......
......
....
oh creo que se borro mi comentario....
ResponderEliminarse puede hacer esto:
For i As Integer = 0 To 2
rowdt(i) = row.Cells(i).Value
Next
en vez de
rowdt(columns(0)) = row.Cells(0).Value
rowdt(columns(1)) = row.Cells(1).Value
rowdt(columns(2)) = row.Cells(2).Value
lo intente con un for, pero me sale que no acepta valores double, siendo mi primer valor 1 en entero o un nombre en string.
lo hago porque quiero pasar un grid a un dataset pero con muchas columnas.
Tengo el archivo XML con diferentes campos entre ellos obra y año y quiere cargar el XML a un datagridview pero con una condicional...osea todas las obras del año 2012.
ResponderEliminarEspero me entiendan y de ante mano agradezco.
Saludos
zapatacastrodavid@gmail.com
Disculpa me podrias ayudar para poder agragar filas a un datagridview que se encuentra enlazado a datos.
ResponderEliminarTe explico.
Tengo un formulario el cual contiene un texbox y un datagridview. Cuando se introduce un codigo en el textbox y se precione enter se busca en la bd y me muestra el resultado en el datagridview.
Si quiero seguir introduciendo codigos al textbox se vayan añadiendo al datagridview.
Solo puedo hacer que se muestre una fila y si busco un nuevo codigo se sobreescribe el que ya estaba.
Te dejo mi correo si me puedes ayudar.
frank33bet@gmail.com
Saludos