Mehrdimensionale structur oder ähnliches

  • VB.NET

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von Kaze91.

    Mehrdimensionale structur oder ähnliches

    Hallo ich würde gerne ohne DB arbeiten.

    VB.NET-Quellcode

    1. Structure termine
    2. Dim Tag As String
    3. Dim Name As string
    4. End Structure


    VB.NET-Quellcode

    1. Dim termine As New List(Of List(Of channels))()
    2. termine.Add("test")


    geht aber so nicht, er sagt er kann string nicht wandeln in iwas...

    gibt es dafür eine saubere lösung ohne db?
    Wie wärs mit List(Of Termine)? Warum nutzt Du keine Klasse? Eine Structure hat hier wenig Sinn. Wieso nutzt Du kein DataSet? Du kannst auch im XML-Format speichern, es ist keine DB notwendig.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private _listTermine As New List(Of Termin)
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. If _listTermine.Count > 0 Then
    5. MessageBox.Show(String.Join(" => ", _listTermine(0).Datum.ToString(), _listTermine(0).Name))
    6. End If
    7. End Sub
    8. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    9. _listTermine.Add(New Termin With {.Datum = DateTime.Parse("27.08.2013 14:30"), .Name = "Was auch immer"})
    10. End Sub
    11. End Class
    12. Public Class Termin
    13. Public Property Datum As DateTime
    14. Public Property Name As String
    15. End Class


    So in Etwa. Aber ich würde mich an Deiner Stelle mit typ. DataSet befassen, da es am besten für Dein Problem geeignet ist. Spätestens, wenn Du Daten speichern willst.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Ok dann erstmal vielen Dank, werd mir das mal genau anschauen.

    Ich lese eine XML Dateien mit Daten aus in ein datagridview , dort sollen sie bearbeitet werden können und wieder eine neue xml mit den Änderungen erstellt werden.

    Und damit das bearbeiten besser klappt wollte ich halt sowas nehmen.

    Typ Dataset geht auch ohne db oder access ?

    VG
    Hier ist ein ausgezeichnetes Tutorial, was Dir genau das zeigt:

    vb-paradise.de/allgemeines/tip…iten-einfachste-variante/
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Also ich habe so ein Dataset aus der Toolbox hinzugefügt. Wenn ich rechtsklick darauf mache kann ich nur Code anzeigen auswählen.

    EIn Designer zum erstellen von Rows gibts bzw finde ich nicht.

    Habs jetzt mal gerade so gemacht:

    VB.NET-Quellcode

    1. Dim table1 As DataTable = New DataTable("bouquets")
    2. table1.Columns.Add("i")
    3. table1.Columns.Add("n")
    4. table1.Columns.Add("t")
    5. table1.Columns.Add("on")
    6. table1.Columns.Add("s")
    7. table1.Columns.Add("frq")
    8. For Each child As Xml.XmlNode In test
    9. table1.Rows.Add(child.Attributes("i").InnerText, child.Attributes("n").InnerText, child.Attributes("t").InnerText, child.Attributes("on").InnerText, child.Attributes("s").InnerText, child.Attributes("frq").InnerText)
    10. ' DataGridView1.Rows.Add(child.Attributes("i").InnerText, child.Attributes("n").InnerText, child.Attributes("t").InnerText, child.Attributes("on").InnerText, child.Attributes("s").InnerText, child.Attributes("frq").InnerText)
    11. Next


    aber jetzt weiss ich nicht wie ich die einzenen colums auslesen kann.

    Ok habs gerausgefunden:

    VB.NET-Quellcode

    1. MsgBox(table1.Rows(0)("i"))

    vg

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

    Du erzeugst innerhalb des DataSets eine DataTable, erstellst dort die gewünschten Spalten. Die Spalten kannst Du im Designer hinzufügen, löschen, wie es Dir beliebt. Das, was Du in Deinem Code da oben machst, ist untypisiert und macht Dir mehr Ärger als Freude.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    VB.NET-Quellcode

    1. Dim bouquets As New ds_bouquets

    VB.NET-Quellcode

    1. Sub getxml(ByVal bouquet As String)
    2. bouquets.Clear()
    3. xDocument.Load("C:\Users\Marc\Desktop\Ubouquets Creator\Ubouquets Creator\My Project\ubouquets.xml")
    4. For Each node As Xml.XmlNode In xDocument.SelectNodes("zapit/Bouquet")
    5. bouquets.bouquetnames.AddbouquetnamesRow(node.Attributes("name").InnerText)
    6. Dim test As Xml.XmlNodeList = node.ChildNodes
    7. For Each child As Xml.XmlNode In test
    8. bouquets.bouquetstable.AddbouquetstableRow(node.Attributes("name").InnerText, child.Attributes("i").InnerText, child.Attributes("n").InnerText, child.Attributes("t").InnerText, child.Attributes("on").InnerText, child.Attributes("s").InnerText, child.Attributes("frq").InnerText)
    9. ' DataGridView1.Rows.Add(child.Attributes("i").InnerText, child.Attributes("n").InnerText, child.Attributes("t").InnerText, child.Attributes("on").InnerText, child.Attributes("s").InnerText, child.Attributes("frq").InnerText)
    10. Next
    11. Next
    12. End Sub


    wenn ich jetzt 5 spalten habe, kann ich dann sagen zeige nur an welche in spalte ein x drinstehen haben?
    Was machst Du da? Das DataSet bietet einen Einzeiler, um XML zu lesen oder zu schreiben. So richtig verstanden hast Du das Ganze noch nicht, gell?
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Doch schon aber die XML ist so aufgebaut und ich brauche die innernodes

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    2. <zapit>
    3. <Bouquet name="Allgemein" hidden="0" locked="0">
    4. <S i="283D" n="Das Erste HD" t="3FB" on="1" s="192" frq="11494" />
    5. <S i="2B66" n="ZDF HD" t="3F3" on="1" s="192" frq="11362" />
    6. <S i="2859" n="NDR FS HH HD" t="401" on="1" s="192" frq="11582" />
    7. <S i="EF10" n="RTL HD" t="421" on="1" s="192" frq="10832" />
    8. <S i="EF15" n="RTL2 HD" t="421" on="1" s="192" frq="10832" />
    9. <S i="EF74" n="SAT.1 HD" t="3F9" on="1" s="192" frq="11464" />
    10. <S i="EF75" n="ProSieben HD" t="3F9" on="1" s="192" frq="11464" />
    11. <S i="EF11" n="VOX HD" t="421" on="1" s="192" frq="10832" />
    12. <S i="EF76" n="kabel eins HD" t="3F9" on="1" s="192" frq="11464" />
    13. <S i="EF77" n="SIXX HD" t="3F9" on="1" s="192" frq="11464" />
    14. <S i="4460" n="SAT.1 Gold" t="453" on="1" s="192" frq="12545" />
    15. <S i="1519" n="TELE 5 HD" t="455" on="1" s="192" frq="12574" />
    16. <S i="701" n="DAS VIERTE" t="5" on="85" s="192" frq="12460" />
    17. <S i="4461" n="SAT.1 emotions" t="453" on="1" s="192" frq="12545" />
    18. <S i="4462" n="kabel eins classics" t="453" on="1" s="192" frq="12545" />
    19. <S i="2F1D" n="RTLNITRO" t="441" on="1" s="192" frq="12188" />
    20. <S i="2EFE" n="RTL Living" t="441" on="1" s="192" frq="12188" />
    21. <S i="526C" n="ANIXE HD" t="41D" on="1" s="192" frq="10773" />
    22. </Bouquet>
    23. <Bouquet name="Sky/Sky Welt/PPV" hidden="0" locked="0">
    24. ...etc
    Ahso, wusste ich nicht, dass Du die Daten so vorliegen hast, nix für ungut.

    Nun, wenn Du nun die DataTable an das DataGridView bindest, erhälst Du eine BindingSource, die zwischen dem DGV und der DataTable vermittelt. Diese hat eine Filter-Property, die kannst Du nutzen, um nach Deinen Wünschen zu filtern.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Muss ich dafür meinen Quellcode noch ändern?

    VB.NET-Quellcode

    1. Sub getbouqets()
    2. Dim i As Integer = 0
    3. While i < bouquets.bouquetstable.Rows.Count
    4. DataGridView1.Rows.Add(bouquets.bouquetstable.Rows(i)(0), bouquets.bouquetstable.Rows(i)(1), bouquets.bouquetstable.Rows(i)(2), bouquets.bouquetstable.Rows(i)(3), bouquets.bouquetstable.Rows(i)(4), bouquets.bouquetstable.Rows(i)(5), bouquets.bouquetstable.Rows(i)(6))
    5. i += 1
    6. End While
    7. End Sub
    Also ich muss jetzt die Sachen in der datagridview ändern können, und im datatable anpassen, die position verschieben können und das ganze jeweils nur von dem was angezeigt wird.

    am schluss muss dann eine neue xml mit allem und änderungen erstellt werden.

    Edit: also mein Hauptproblem ist, wenn ich im datagridview etwas ändere, kann ich es ja nicht über den index im dataset ändern, da dieser ja auch die sachen beinhaltet, die nicht angezeit werden.

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