|
|
A Unit of Aim Clear Technologies Ltd.
Advertise with us
 |
|
|
Page 1 of 1
|
[ 1 post ] |
|
sreenath
Super Moderator
Joined:
Wed Aug 26, 2009 10:01 pm
Beans: 1,227
In Bank: 14665
College: ESEC
Degree: M.Sc
Department: CSE
State: TN
Fav Quote: no pain no gain
|
|
Sat Oct 03, 2009 3:02 pm
|
Post subject: Serializing a ListView to XML
Why should I migrate to .NET? Another reason is Serialization (saving objects to files) to XML is so simple in NET.
In this article, I will show you how easy it is to save the contents of a ListView to an XML file and then reload the ListView from XML.
Three VB.NET methods are used in this article. The first method is SaveObjectProperties. In this application, I have a ListView with twenty-two columns in it. I have a need to save the contents of the ListView and the next time I run the application, I want to populate the ListView with the data that was loaded in it the last time the application was run. SaveObjectProperties will do that for me. First, I create a new DataTable, named "PrintObject", in a DataSet. Next, I loop to add twenty-two columns to the DataTable. They are simply named "Col0" to "Col21". There names do not really matter as you will see in the reload method. Next, I loop thru the the ListView, creating an object for each row of the ListView and then calling AddRowToTable to add each object to the DataTable. Finally, I call the WriteXML method of the DataSet object. It does the creation of the XML automatically.
Public Sub SaveObjectProperties() Dim ds As New DataSet Dim oCG As New CGrid Dim i As Integer
Try ' create a datatable in a dataset. the dataset will ' automatically create the xml Dim dt As DataTable = ds.Tables.Add("PrintObject")
For i = 0 To MelistviewObjects.Columns.Count - 1 dt.Columns.Add("Col" & i.ToString, Type.GetType("System.String")) Next
For i = 0 To MelistviewObjects.Items.Count - 1 With Me.listviewObjects.Items(i) Dim o() As Object = {.SubItems(0).Text, _ .SubItems(1).Text, _ .SubItems(2).Text, _ .SubItems(3).Text, _ .SubItems(4).Text, _ .SubItems(5).Text, _ .SubItems(6).Text, _ .SubItems(7).Text, _ .SubItems(8).Text, _ .SubItems(9).Text, _ .SubItems(10).Text, _ .SubItems(11).Text, _ .SubItems(12).Text, _ .SubItems(13).Text, _ .SubItems(14).Text, _ .SubItems(15).Text, _ .SubItems(16).Text, _ .SubItems(17).Text, _ .SubItems(18).Text, _ .SubItems(19).Text, _ .SubItems(20).Text, _ .SubItems(21).Text} AddRowToTable(dt, o) End With Next i ds.WriteXml(Me.textSavePath.Text) Catch ex As System.Exception MsgBox(ex.ToString) End Try End Sub
This method simply adds an object array to the passed DataTable. Note that we can build a DataTable in memory, that is not linked to a database. That is one of the neat things about ADO.NET.
Public Function AddRowToTable(ByRef dt As DataTable, _ ByVal ParamArray DRows() As Object) As Boolean Dim i As Short Try Dim newRow As DataRow = dt.NewRow For i = 0 To UBound(DRows) ' add a row to the passed dtList newRow(i) = DRows(i) Next dt.Rows.Add(newRow) Return True Catch ex As System.Exception MsgBox(ex.ToString) Return False End Try End Function
This method reloads the ListView from the previously created XML file. First, I create a new DataSet object and use it to read the XML file. As you can see, ADO.NET and XML work seamlessly. Next, I get a DataTable object set to the "PrintObject" DataTable saved as XML. Finally, I loop through each row and column of the DataTable to fill the ListView. ADO.NET, XML, and VB.NET make formerly complex tasks become a cakewalk!
Public Sub ReloadListviewFromXML() Dim ds As New DataSet
Try ds.ReadXml(Me.textOpenPath.Text) Dim dt As DataTable = ds.Tables("PrintObject") Dim i As Integer Dim j As Integer Me.listviewObjects.Items.Clear()
For i = 0 To dt.Rows.Count - 1 Dim dr As DataRow = dt.Rows(i) With Me.listviewObjects .Items.Add(dr(0)) For j = 1 To dt.Columns.Count - 1 .Items(i).SubItems.Add(dr(j)) Next End With Next Catch ex As System.Exception StructuredErrorHandler(ex) End Try End Sub
_________________ sreenath@myanna.in
|
|
|
|
|
Page 1 of 1
|
[ 1 post ] |
|
Bookmark & Share
Who is online |
Users browsing this forum: No registered users and 0 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|

| |