Results 1 to 19 of 19

Thread: vb.net read xml to listview and textbox

  1. #1

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    vb.net read xml to listview and textbox

    Hi

    How can I read this xml to TreeView

    this is the TreeView
    <Text>Category 1</Text>
    <Text>Name 1</Text>

    and this when I select <Text>Name 1</Text> the I get the rest into Textbox
    <Layer>Layer name</Layer>
    <Layer>Line name</Layer>
    <Block>Block name</Block>
    <Color>Color name</Color>

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <TreeViewData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Nodes>
        <TreeNodeData>
          <Text>Category 1</Text>
          <ImageIndex>0</ImageIndex>
          <SelectedImageIndex>1</SelectedImageIndex>
          <Checked>false</Checked>
          <Expanded>false</Expanded>
          <Nodes>
            <TreeNodeData>
              <Text>Name 1</Text>	
              <Layer>Layer name</Layer>		
              <Layer>Line name</Layer>	
              <Block>Block name</Block>	
              <Color>Color name</Color>			  
              <ImageIndex>1</ImageIndex>
              <SelectedImageIndex>2</SelectedImageIndex>
              <Checked>true</Checked>
              <Expanded>false</Expanded>
            </TreeNodeData>
          </Nodes>
        </TreeNodeData>
        <TreeNodeData>
          <Text>Category 2</Text>
          <ImageIndex>0</ImageIndex>
          <SelectedImageIndex>2</SelectedImageIndex>
          <Checked>false</Checked>
          <Expanded>false</Expanded>
          <Nodes>
            <TreeNodeData>
              <Text>Name 1</Text>
              <Layer>Layer name</Layer>		
              <Layer>Line name</Layer>	
              <Block>Block name</Block>	
              <Color>Color name</Color>			  
              <ImageIndex>1</ImageIndex>
              <SelectedImageIndex>2</SelectedImageIndex>
              <Checked>false</Checked>
              <Expanded>false</Expanded>
            </TreeNodeData>
          </Nodes>
        </TreeNodeData>
      </Nodes>
    </TreeViewData>

  2. #2
    Frenzied Member KGComputers's Avatar
    Join Date
    Dec 2005
    Location
    Cebu, PH
    Posts
    2,020

    Re: vb.net read xml to listview and textbox

    The title says ListView and your post says TreeView. So which is correct?
    CodeBank: VB.NET & C#.NET | ASP.NET
    Programming: C# | VB.NET
    Blogs: Personal | Programming
    Projects: GitHub | jsFiddle
    ___________________________________________________________________________________

    Rating someone's post is a way of saying Thanks...

  3. #3

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    Re: vb.net read xml to listview and textbox

    Sorry for the Title This is Treeview I am tray to use

  4. #4
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,754

    Re: vb.net read xml to listview and textbox

    Here is an example based on the data provided. I did add one additional name node to the first category. This is very specific to the example given. If further depth of nesting was needed a different approach would have been taken.

    Code:
    Imports <xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    Imports <xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    
    Public Class Form1
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            'build aTreeView
            aTreeView.Nodes.Clear()
            aTreeView.Nodes.Add("Root")
    
            Dim ie As IEnumerable(Of XElement)
            ie = From el In xe.<Nodes>.<TreeNodeData> Select el.<Text>.FirstOrDefault
    
            'get category nodes
            For Each el As XElement In ie
                Dim tn As New TreeNode(el.Value)
                'get name nodes
                For Each sel As XElement In el.Parent...<TreeNodeData>
                    Dim stn As New TreeNode(sel.<Text>.Value)
                    stn.Tag = sel 'will be used in treeview select
                    tn.Nodes.Add(stn)
                Next
                aTreeView.Nodes(0).Nodes.Add(tn)
            Next
    
        End Sub
    
        Private Sub aTreeView_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles aTreeView.AfterSelect
            TextBox1.Clear()
            If e.Node.Tag IsNot Nothing Then
                Dim foo As XElement = DirectCast(e.Node.Tag, XElement)
                For Each el As XElement In foo.Elements
                    TextBox1.AppendText(el.Value)
                    TextBox1.AppendText("  ")
                Next
            End If
        End Sub
    
        'to load from a file
        '  Dim xe As XElement = XElement.Load("Your Path Here")
        ' for testing
        Dim xe As XElement = <TreeViewData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                                 <Nodes>
                                     <TreeNodeData>
                                         <Text>Category 1</Text>
                                         <ImageIndex>0</ImageIndex>
                                         <SelectedImageIndex>1</SelectedImageIndex>
                                         <Checked>false</Checked>
                                         <Expanded>false</Expanded>
                                         <Nodes>
                                             <TreeNodeData>
                                                 <Text>Name 1</Text>
                                                 <Layer>Layer name</Layer>
                                                 <Layer>Line name</Layer>
                                                 <Block>Block name</Block>
                                                 <Color>Color name</Color>
                                                 <ImageIndex>1</ImageIndex>
                                                 <SelectedImageIndex>2</SelectedImageIndex>
                                                 <Checked>true</Checked>
                                                 <Expanded>false</Expanded>
                                             </TreeNodeData>
                                             <TreeNodeData>
                                                 <Text>Name 2</Text>
                                                 <Layer>Layer name2</Layer>
                                                 <Layer>Line name2</Layer>
                                                 <Block>Block name2</Block>
                                                 <Color>Color name2</Color>
                                                 <ImageIndex>1</ImageIndex>
                                                 <SelectedImageIndex>2</SelectedImageIndex>
                                                 <Checked>true</Checked>
                                                 <Expanded>false</Expanded>
                                             </TreeNodeData>
                                         </Nodes>
                                     </TreeNodeData>
                                     <TreeNodeData>
                                         <Text>Category 2</Text>
                                         <ImageIndex>0</ImageIndex>
                                         <SelectedImageIndex>2</SelectedImageIndex>
                                         <Checked>false</Checked>
                                         <Expanded>false</Expanded>
                                         <Nodes>
                                             <TreeNodeData>
                                                 <Text>Name 1</Text>
                                                 <Layer>Layer name</Layer>
                                                 <Layer>Line name</Layer>
                                                 <Block>Block name</Block>
                                                 <Color>Color name</Color>
                                                 <ImageIndex>1</ImageIndex>
                                                 <SelectedImageIndex>2</SelectedImageIndex>
                                                 <Checked>false</Checked>
                                                 <Expanded>false</Expanded>
                                             </TreeNodeData>
                                         </Nodes>
                                     </TreeNodeData>
                                 </Nodes>
                             </TreeViewData>
    End Class
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  5. #5

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    Re: vb.net read xml to listview and textbox

    Thanks dbasnett this is just perfect

    How do I hide Root

  6. #6
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,754

    Re: vb.net read xml to listview and textbox

    See if this helps, note the commented lines.

    Code:
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            'build aTreeView
            aTreeView.Nodes.Clear()
            'aTreeView.Nodes.Add("Root")
    
            Dim ie As IEnumerable(Of XElement)
            ie = From el In xe.<Nodes>.<TreeNodeData> Select el.<Text>.FirstOrDefault
    
            'get category nodes
            For Each el As XElement In ie
                Dim tn As New TreeNode(el.Value)
                'get name nodes
                For Each sel As XElement In el.Parent...<TreeNodeData>
                    Dim stn As New TreeNode(sel.<Text>.Value)
                    stn.Tag = sel 'will be used in treeview select
                    tn.Nodes.Add(stn)
                Next
                'aTreeView.Nodes(0).Nodes.Add(tn)
                aTreeView.Nodes.Add(tn)
            Next
    
        End Sub
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  7. #7

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    Re: vb.net read xml to listview and textbox

    Thanks again dbasnett Relay need to ask how can I save changes back to the Xml file
    if I want to save = <Color>Color name</Color>


    Code:
           If e.Node.Tag IsNot Nothing Then
                Dim foo As XElement = DirectCast(e.Node.Tag, XElement)
                For Each el As XElement In foo.Elements
                    '  MsgBox(el.Name.ToString)
                    If el.Name.ToString = "Layer" Then
                        Txt_layer.Text = el.Value
                    End If
    
                    If el.Name.ToString = "Line" Then
                        Txt_Line.Text = el.Value
                    End If
    
                    If el.Name.ToString = "Block" Then
                        Txt_Block.Text = el.Value
                    End If
    
                    If el.Name.ToString = "Color" Then
                        Txt_Color.Text = el.Value
                    End If
                Next
            End If

  8. #8
    PowerPoster
    Join Date
    Sep 2006
    Location
    Egypt
    Posts
    2,579

    Re: vb.net read xml to listview and textbox

    Try this
    Code:
        Private Sub SetElementValue(xNode As XmlNode, strElementName As String, strValue As String)
            If xNode IsNot Nothing Then
                Dim xE As XmlNode = xNode.SelectSingleNode(strElementName)
                If xE IsNot Nothing Then
                    xE.InnerText = strValue
                End If
            End If
        End Sub
    Usage:
    Code:
    SetElementValue (DirectCast(e.Node.Tag, XElement), "Color", "Color name")
    Last edited by 4x2y; Oct 2nd, 2016 at 02:27 PM.



  9. #9
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,754

    Re: vb.net read xml to listview and textbox

    Here is the entire example again, with the addition of a button 2, and changes to AfterSelect. The XML that is being placed in various .Tag are references to the original as you will see.

    Code:
    Imports <xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    Imports <xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    
    Public Class Form1
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            'build aTreeView
            aTreeView.Nodes.Clear()
            'aTreeView.Nodes.Add("Root")
    
            Dim ie As IEnumerable(Of XElement)
            ie = From el In XE.<Nodes>.<TreeNodeData> Select el.<Text>.FirstOrDefault
    
            'get category nodes
            For Each el As XElement In ie
                Dim tn As New TreeNode(el.Value)
                'get name nodes
                For Each sel As XElement In el.Parent...<TreeNodeData>
                    Dim stn As New TreeNode(sel.<Text>.Value)
                    stn.Tag = sel 'will be used in treeview select
                    tn.Nodes.Add(stn)
                Next
                'aTreeView.Nodes(0).Nodes.Add(tn)
                aTreeView.Nodes.Add(tn)
            Next
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            If tbcolor.Tag IsNot Nothing Then
                Dim foo As XElement = DirectCast(tbcolor.Tag, XElement)
                foo.<Color>.Value = tbcolor.Text
                Debug.WriteLine(XE.ToString)
                Stop 'look at XE
                'to save
                ' XE.Save(path)
            End If
        End Sub
    
        Private Sub aTreeView_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles aTreeView.AfterSelect
            If e.Node.Tag IsNot Nothing Then
                Dim foo As XElement = DirectCast(e.Node.Tag, XElement)
                tblay.Text = foo.<Layer>.Value
                tbline.Text = foo.<Line>.Value
                tbblk.Text = foo.<Block>.Value
                tbcolor.Text = foo.<Color>.Value
    
                tblay.Tag = foo
                tbline.Tag = foo
                tbblk.Tag = foo
                tbcolor.Tag = foo
            End If
        End Sub
    
        'to load from a file
        '  Dim xe As XElement = XElement.Load("Your Path Here")
        ' for testing
        Dim XE As XElement = <TreeViewData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                                 <Nodes>
                                     <TreeNodeData>
                                         <Text>Category 1</Text>
                                         <ImageIndex>0</ImageIndex>
                                         <SelectedImageIndex>1</SelectedImageIndex>
                                         <Checked>false</Checked>
                                         <Expanded>false</Expanded>
                                         <Nodes>
                                             <TreeNodeData>
                                                 <Text>Name 1</Text>
                                                 <Layer>Layer name</Layer>
                                                 <Line>Line name</Line>
                                                 <Block>Block name</Block>
                                                 <Color>Color name</Color>
                                                 <ImageIndex>1</ImageIndex>
                                                 <SelectedImageIndex>2</SelectedImageIndex>
                                                 <Checked>true</Checked>
                                                 <Expanded>false</Expanded>
                                             </TreeNodeData>
                                             <TreeNodeData>
                                                 <Text>Name 2</Text>
                                                 <Layer>Layer name2</Layer>
                                                 <Line>Line name2</Line>
                                                 <Block>Block name2</Block>
                                                 <Color>Color name2</Color>
                                                 <ImageIndex>1</ImageIndex>
                                                 <SelectedImageIndex>2</SelectedImageIndex>
                                                 <Checked>true</Checked>
                                                 <Expanded>false</Expanded>
                                             </TreeNodeData>
                                         </Nodes>
                                     </TreeNodeData>
                                     <TreeNodeData>
                                         <Text>Category 2</Text>
                                         <ImageIndex>0</ImageIndex>
                                         <SelectedImageIndex>2</SelectedImageIndex>
                                         <Checked>false</Checked>
                                         <Expanded>false</Expanded>
                                         <Nodes>
                                             <TreeNodeData>
                                                 <Text>Name 1</Text>
                                                 <Layer>Layer name</Layer>
                                                 <Line>Line name</Line>
                                                 <Block>Block name</Block>
                                                 <Color>Color name</Color>
                                                 <ImageIndex>1</ImageIndex>
                                                 <SelectedImageIndex>2</SelectedImageIndex>
                                                 <Checked>false</Checked>
                                                 <Expanded>false</Expanded>
                                             </TreeNodeData>
                                         </Nodes>
                                     </TreeNodeData>
                                 </Nodes>
                             </TreeViewData>
    End Class
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  10. #10

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    Re: vb.net read xml to listview and textbox

    Thanks dbasnett for your help ! and 4x2y your your help

  11. #11

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    Re: vb.net read xml to listview and textbox

    Hi


    tell me when I change the XML file in Notepad and try to reload the XML file I don't get the changes need to close and open the form again

    how can I reload the XML file

    Code:
         'build aTreeView
            aTreeView.Nodes.Clear()
            'aTreeView.Nodes.Add("Root")
    
            Dim ie As IEnumerable(Of XElement)
            ie = From el In XE.<Nodes>.<TreeNodeData> Select el.<Text>.FirstOrDefault
    
            'get category nodes
            For Each el As XElement In ie
                Dim tn As New TreeNode(el.Value)
                'get name nodes
                For Each sel As XElement In el.Parent...<TreeNodeData>
                    Dim stn As New TreeNode(sel.<Text>.Value)
                    stn.Tag = sel 'will be used in treeview select
                    tn.Nodes.Add(stn)
                Next
                'aTreeView.Nodes(0).Nodes.Add(tn)
                aTreeView.Nodes.Add(tn)
            Next

  12. #12
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,754

    Re: vb.net read xml to listview and textbox

    I am a little confused by what you mean. Before executing the code shown you should have

    Code:
            XE = XElement.Load("PATH HERE")
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  13. #13

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    Re: vb.net read xml to listview and textbox

    Thanks


    Too easy Just did not see the solution

  14. #14

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    Re: vb.net read xml to listview and textbox

    Thanks dbasnett

    Can I Go a little further and ask about add new and delete from the tree

  15. #15

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    Re: vb.net read xml to listview and textbox

    Hi

    I am finish to find out how I can add new but not how to add new Category


    Code:
            Dim foo As XElement = DirectCast(Form1.Mytreev.SelectedNode.Tag, XElement)
    
                foo.AddAfterSelf( _
        New XElement("TreeNodeData", "", _
        New XElement("Text", Lab_tegund.Text), _
        New XElement("Layer", Lab_layer.Text), _
        New XElement("Line", strengur), _
        New XElement("Block", Lab_block.Text), _
        New XElement("BlockNafn", Lab_block_nafn.Text), _
        New XElement("Color", Lab_color.Text), _
        New XElement("ImageIndex", "1"), _
        New XElement("SelectedImageIndex", "2"), _
        New XElement("Checked", "false"), _
        New XElement("Expanded", "false")))

  16. #16
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,754

    Re: vb.net read xml to listview and textbox

    Not sure what you are asking. When creating new xelements consider this form,

    Code:
            Dim newEl As XElement = <TreeNodeData>
                                        <Text><%= Lab_tegund.Text %></Text>
                                        <Layer><%= Lab_layer.Text %></Layer>
                                        <Line><%= strengur %></Line>
                                        <Block><%= Lab_block.Text %></Block>
                                        <BlockNafn><%= Lab_block_nafn.Text %></BlockNafn>
                                        <Color><%= Lab_color.Text %></Color>
                                        <ImageIndex>1</ImageIndex>
                                        <SelectedImageIndex>2</SelectedImageIndex>
                                        <Checked>false</Checked>
                                        <Expanded>false</Expanded>
                                    </TreeNodeData>
    See https://docs.microsoft.com/en-us/dot...n-xml-literals
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  17. #17

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    Re: vb.net read xml to listview and textbox

    Thanks will check this out

    I was thinning about Category in the tree how I can add new Category to the tree

    Code:
       <TreeNodeData>
          <Text>Category 1</Text>
          <ImageIndex>0</ImageIndex>
          <SelectedImageIndex>1</SelectedImageIndex>
          <Checked>false</Checked>
          <Expanded>false</Expanded>
          <Nodes>
    Last edited by ssalomon; Oct 31st, 2017 at 10:03 AM.

  18. #18
    Powered By Medtronic dbasnett's Avatar
    Join Date
    Dec 2007
    Location
    Jefferson City, MO
    Posts
    9,754

    Re: vb.net read xml to listview and textbox

    Quote Originally Posted by ssalomon View Post
    Thanks will check this out

    I was thinning about Category in the tree how I can add new Category to the tree

    Code:
       <TreeNodeData>
          <Text>Category 1</Text>
          <ImageIndex>0</ImageIndex>
          <SelectedImageIndex>1</SelectedImageIndex>
          <Checked>false</Checked>
          <Expanded>false</Expanded>
          <Nodes>
    Create a method that takes an XElement and treeview as arguments. Then call the method with the new xelement and treeview.

    The method
    Code:
        Public Sub AddNode(el As XElement, someTreeview As TreeView)
            Dim newNode As New TreeNode(el.<Text>.Value)
            newNode.Tag = el
            someTreeview.Nodes.Add(newNode)
        End Sub
    Calling

    Code:
            Dim newEl As XElement = <TreeNodeData>
                                        <Text><%= Lab_tegund.Text %></Text>
                                        <Layer><%= Lab_layer.Text %></Layer>
                                        <Line><%= strengur %></Line>
                                        <Block><%= Lab_block.Text %></Block>
                                        <BlockNafn><%= Lab_block_nafn.Text %></BlockNafn>
                                        <Color><%= Lab_color.Text %></Color>
                                        <ImageIndex>1</ImageIndex>
                                        <SelectedImageIndex>2</SelectedImageIndex>
                                        <Checked>false</Checked>
                                        <Expanded>false</Expanded>
                                    </TreeNodeData>
    
            AddNode(newEl, aTreeView)
    My First Computer -- Documentation Link (RT?M) -- Using the Debugger -- Prime Number Sieve
    Counting Bits -- Subnet Calculator -- UI Guidelines -- >> SerialPort Answer <<

    "Those who use Application.DoEvents have no idea what it does and those who know what it does never use it." John Wein

  19. #19

    Thread Starter
    Lively Member
    Join Date
    Jul 2002
    Posts
    115

    Re: vb.net read xml to listview and textbox

    Thanks dbasnett

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width