Daten einer Listview aus Abfrage in Spalten sortieren

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von soulreafer.

    Daten einer Listview aus Abfrage in Spalten sortieren

    gegeben ist ein WPF Projekt darin eine Listview mit zwei Spalten :

    [code=xml]
    <ListView>
    <ListView.View>
    <GridView >
    <GridViewColumn Width="0" Header="ID"/>
    <GridViewColumn Width="Auto" Header="Name der Firma"/>
    </GridView>
    </ListView.View>
    </ListView>
    [/code]

    Durch eine Abfrage sollen die Abfragewerte auf die entsprechenden Spaltenverteilt werden...

    [code=sql]
    cmd.CommandText = "SELECT * FROM ds_firma ORDER BY ds_firma_id ASC"
    [/code]

    ...und auf die Spalten der Listview verteilt werden:

    [code=vbnet]
    ListView1.Items.Add(reader("ds_firma_nr") & " - " & reader("ds_firma_name"))
    [/code]

    In meinem Beispiel werden die Abfragewerte in einer Spalte geschrieben. Die Abfragewerte sollen aber auf die Spalten der o.g. Listview verteilt werden.

    Wie bekomme ich das hin und achtet bitte beim Helfen auf meine Signatur?

    Nachtrag: Es ist vielleicht noch sinnvoll zu erwähnen das die abgerufenen Daten in einer Zeile stehen sollen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thomas2705“ ()

    Naja den Namen der Firma musst du als Subitem hinzufügen und nicht mit dem "Hauptitem" zusammen! ;)

    VB.NET-Quellcode

    1. Dim SubItem As ListViewItem With ListView1.Items SubItem = .Add("Zeile 1") SubItem.SubItems.Add("Spalte 2") SubItem.SubItems.Add("Spalte 3") SubItem.SubItems.Add("Spalte 4") SubItem.SubItems.Add("Spalte 5") SubItem = .Add("Zeile 2") SubItem.SubItems.Add("Spalte 2") SubItem.SubItems.Add("Spalte 3") SubItem.SubItems.Add("Spalte 4") SubItem.SubItems.Add("Spalte 5") ' usw. End With


    Quelle: hier
    Hallo Icemanns

    Ich komme mit Deiner Lösung gar nicht klar. Die Ausführungen der von Dir angegebenen Quelle hilft mir auch nicht wrklich weiter. Vielleicht haben wir uns mißverstanden. Deshalb noch einmal vom Anfang:

    gegeben:

    MySQL Datenbank mit Tabellen, mit Feldern: ds_stam_id, ds_firma_name

    Beim Öffnen des Fensters erfolgt eine Anfrage und die Abfragewerte werden in die Spalten der Liste geschrieben:

    im XAML wurde folgende List erstellt:

    [code=xml]
    <ListView x:Name="lst01" >
    <ListView.View>
    <GridView >
    <GridViewColumn x:Name="Spalte1" Width="0" Header="ID" DisplayMemberBinding="{Binding ds_firma_id}"/>
    <GridViewColumn x:Name="Spalte2" Width="Auto" Header="Name der Firma" DisplayMemberBinding="{Binding name_der_firma}" /></GridView>
    </ListView.View>
    </ListView>
    [/code]



    [code=vbnet]
    cmd.CommandText = "SELECT * FROM ds_firma"
    reader = cmd.ExecuteReaderDo While reader.Read
    'hier soll der Code stehen den ich nicht kenne!
    Loop
    reader.Close()
    [/code]

    Ich will mit dem Code keine weiteren Spaltennamen erzeugen sondern lediglich die Abfragewerte auf die bereits vorhandenen Werte verteilen und weiß nicht wie das geht.
    die ganze vorgehensweise ist voll un-wpf-mäßig

    du solltest die Daten in ein datenmodell einlesen, und dann deine listview da dran binden, vorzugsweise über eine collectionviewSource.

    dann kriegt man glaub sortieren und sowas hinterhergeschmissen.
    hier die Theorie

    vlt. findsteja hierein geeignetes Sample
    Hallo,
    Das Thema ist zwar schon etwas älter aber ich habe es mit dem Beispiel nicht hinbekommen da mit ein Fehler mit dem .subitem ausgegeben wurde.
    Dann habe ich mal selber etwas versucht und dort passiert bei mir garnix.

    hier mal der code. wäre super wenn das jemand mal überfliegen könnte.

    VB.NET-Quellcode

    1. Dim subitem As ListViewItem
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. ListView1.Columns.Add("1", 240, HorizontalAlignment.Left)
    4. ListView1.Columns.Add("2", 240, HorizontalAlignment.Left)
    5. ListView1.Columns.Add("3", 240, HorizontalAlignment.Left)
    6. Dim datei() As String = IO.File.ReadAllLines("items.csv")
    7. For i As Integer = 0 To datei.Length() - 1
    8. Dim eintrag() As String = Split(datei(i), ",")
    9. With ListView1.Items
    10. subitem = .Add(eintrag(1))
    11. subitem.SubItems.Add(eintrag(2))
    12. End With
    13. 'TextBox3.Text = eintrag(1)
    14. Next
    15. End Sub


    ich muss dazu sagen bei mir sieht jede zeile so aus:

    einname,eine zahl,eine zahl ( also müsste ich es noch einmal mehr splitten ?! )

    danke

    Edit: Verdammt hab ins falsche Thema geschrieben -.-