vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Collection in Treeview 
Autor: ModeratorDaveS (Moderator)
Datum: 16.10.10 17:23

Ich verstehe dein Problem nicht. Du kannst die Xml Uri auch als Http-Request angeben. Das ändert nichts am Algorithmus. Heir werden die Elemente nach "code" sortiert, daher existieren immer die Root-Nodes bevor die Kinder erreicht werden. Falls die Parents noch nicht verfügbar sind müßte man die Child-Elemente zwischenspeichern. Wenn @code fehlt oder leer bleibt bei den Root-Elementen kannst du es mit
If String.IsNullOrEmpty(c.parent) Then
prüfen. Es ist übrigens schön mal hier ausnahmsweise etwas professionell aussehende Xml zu genießen.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Collection in Treeview 
Autor: Snickers
Datum: 15.10.10 17:40

Hi all,

ich baue mir aus einer XML Datei eine Collection! Welche im Ergebnis so aussieht.

1,kategorie
1.1,unterkategorie,1
1.1.1,unterunterkategorie,1.1
1.1.1.1,unterunterunterkategorie,1.1.1
1.1.1.2,unterunterunterkategorie2,1.1.1
1.1.1.3,unterunterunterkategorie3,1.1.1

usw. usw.

Sprich ich hab ID,NAME,PARENT

Jetzt versuche ich verzweifelt das in ein Treeview zu bekommen.

tr.Nodes.Add("Kategorien")
            For Each kvp As KeyValuePair(Of String, String()) In sl
 
               tr.Nodes(0).Nodes.Add(("" + kvp.Key & ";") + kvp.Value(0) + _
                 kvp.Value(1))
 
            Next
das klappt auch soweit nur habe ich halt nur einen Stamm, die Frage ist kann ich den nodes die ID als Index geben?

Danke für eure Hilfe.

Gruß Dustin
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Collection in Treeview 
Autor: Manfred X
Datum: 16.10.10 08:37

Hallo!

Falls Du den Inhalt der XML-Datei direkt in das
Treeview-Control übertragen kannst, hilft vielleicht
der folgende Tipp:

http://www.vbarchiv.net/tipps/details.php?id=1225
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Collection in Treeview 
Autor: Snickers
Datum: 16.10.10 10:15

Hi Manfred X,

das geht leider nicht, weil die xml eine Katastrophe ist, darum muss ich den Umweg machen über die Collections. Die XML die ich bekomme hat keine strucktur und ist nicht geordnet.

Vielleicht kann mir ja doch noch jemand helfen.

Danke

Dustin
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Collection in Treeview 
Autor: Manfred X
Datum: 16.10.10 10:53

Hallo!

Ich vermute, Deine Sackgasse ist die Collection.
Wäre es nicht einfacher - insbesondere für die
Weiterverarbeitung der Daten - die Einträge in
der nicht gut strukturierten XML-Datei auszulesen
und daraus ein geeignet strukturiertes XML-Dokument
zu erstellen.

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Collection in Treeview 
Autor: Snickers
Datum: 16.10.10 11:13

Ok, dann ist hier meine XML Datei wie bekomme ich diese dann strukturiert und dann in den Treeview?

 <?xml version="1.0" encoding="UTF-8"?>
<downloadResponse xmlns="http://www.meinpaket.de/xsd/dietmar/1.0/products" _
  version="1.0">
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
  xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
  xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.2">
    <name>Beleuchtung & Lampen</name>
    <parent code="4"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.7">
    <name>Kochen & Essen</name>
    <parent code="4"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.8.1">
    <name>Möbel</name>
    <parent code="4.8"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.8.3">
    <name>Bettwäsche & Bettlaken</name>
    <parent code="4.8"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.5.2">
    <name>Feuerwehr-Bedarf</name>
    <parent code="4.5"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.6.1">
    <name>Bügeln, Nähen & mehr</name>
    <parent code="4.6"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.1.1">
    <name>Bad & Sanitär</name>
    <parent code="4.1"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.1.8">
    <name>Kamine</name>
    <parent code="4.1"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.3.4">
    <name>Kalender, Planer & Organizer</name>
    <parent code="4.3"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.8.5.7">
    <name>Krüge, Kannen & Karaffen</name>
    <parent code="4.8.5"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.8.5.16">
    <name>Körbe</name>
    <parent code="4.8.5"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.8.2.2">
    <name>Handtücher</name>
    <parent code="4.8.2"/>
  </category>
  <category xmlns:ns4="http://www.meinpaket.de/xsd/dietmar/1.0/orders" _
    xmlns:ns3="http://www.meinpaket.de/xsd/dietmar/1.0/common" _
    xmlns:ns2="http://www.meinpaket.de/xsd/dietmar/1.0/checkout" code="4.8.1.5">
    <name>Küche</name>
    <parent code="4.8.1"/>
  </category>
</downloadResponse>
Die ist nur ein Auszug aber man kann erkennen das die Datei komplett unstrukturiert ist. Ich bekomme Sie auch nicht anders!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Collection in Treeview 
Autor: Manfred X
Datum: 16.10.10 11:35

Hallo!

Mein Browser meldet Fehler beim Laden dieser Struktur.

Hier gibt es zahlreiche Informationen zum Thema.

http://www.dotnet-snippets.de/dns/c-treeview-export-to-xml-or-import-from-xml-SID705.aspx

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Collection in Treeview 
Autor: ModeratorDaveS (Moderator)
Datum: 16.10.10 14:12

Deine Xml ist nicht vollständig mit sämtlichen Parents, und "&" ist syntaxmäßig falsch. Sonst geht's so, zB
Imports System.Xml
 
Imports <xmlns="http://www.meinpaket.de/xsd/dietmar/1.0/products">
 
    Public Class Form1
 
        Private Sub LoadXmlTree()
 
            Dim xd = XDocument.Load("X:\Test\categories.xml")
 
            Dim categories = (From cat In xd.Root.<category> Order By cat.@code _
              Select New With {.id = cat.@code, .name = cat.<name>.Value, _
              .parent = cat.<parent>.@code}).ToList()
 
            Dim pd As New Dictionary(Of String, TreeNode)
 
            For Each c In categories
                Dim tn As New TreeNode(c.name)
                If Not pd.ContainsKey(c.id) Then
                    pd.Add(c.id, tn)
                End If
                If c.parent = "root" Then
                    TreeView1.Nodes.Add(tn)
                Else
                    If Not pd.ContainsKey(c.parent) Then
                        MsgBox("parent fehlt: " & c.id)
                    Else
                        pd(c.parent).Nodes.Add(tn)
                    End If
                End If
            Next
 
        End Sub
 
    End Class
(Ich habe der Category "4" den Parent "root" gegeben).
("id" sollte man vielleicht in "code" umbenennen).

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Collection in Treeview 
Autor: Snickers
Datum: 16.10.10 17:04

Hi Dave,

danke dir erstmal. Mein Problem ist ja eigentlich das ich die category.xml garnicht zwischenspeichere bzw. müsste ich das nicht. Ich kriege die Daten ja durch einen httprequest.

Ich habe ja noch viel mehr kategorien als nur die hier angezeigten meine abgespeicherte XML hat ca. 800 kb.

Ich müsste mir die root kategorie "Kategorien" nennen und dann die Kategorien die keinen parent haben sprich 1,2,3,4 usw. je einen Treenode erstellen.

Ich weiß das deren XML Datei einfach mist ist, bekomme die Daten aber nicht anders.

Also wie kann ich erst das Node "Kategorien" erstellen dann die anderen Nodes anhängen?

 If c.parent = "" Then
                TreeView1.Nodes.Add(tn)
            Else
so gehts ja nicht?

Danke Dustin
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Collection in Treeview 
Autor: Snickers
Datum: 16.10.10 17:35

Super danke das funzt. Perfekt.

Zitat:

Es ist übrigens schön mal hier ausnahmsweise etwas professionell aussehende Xml zu genießen.


Ist das ironisch oder ernst gemeint??? Weil ich fand das nun nicht wirklich schönes bzw. Professionelles XML.

Eine Frage habe ich jetzt noch an dich.

Ich würde jetzt gerne noch die Cat_Id mit übergeben sodas ich nen nächsten Event machen kann.

Ich möchte dann nen node click event machen der mir dann nen Grid füllt mit all den Artikeln die sich in der Kategorie befinden.

Und ja ich weiß ich nerve, warum Importierst du die xsd? Hat das was mit linq zu tun?

Danke Dustin
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Collection in Treeview 
Autor: ModeratorDaveS (Moderator)
Datum: 16.10.10 18:14

Nee, war nicht ironisch gemeint, auch wenn ich vielleicht nicht ganz genau das gleiche entworfen hätte.

Jede TreeNode hat eine .Tag-Eigenschaft wo du Id oder sonstwas abspeichern kannst. Wenn du eine Structure deklarierst für die category-Werte (meine Structure ist anonym) kannst du das ganze Objekt dort ablegen. Die Abfrage wäre dann etwa
 ...Select New MyStruct With {.id = cat.@code, ...}
Und ja, die xmlns ist notwendig sonst werden die Elemente nicht gefunden bei der Abfrage.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel