Datensätze an markierter Position im DGV hinzufügen

  • VB.NET
  • .NET 4.5

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von AKP.

    Datensätze an markierter Position im DGV hinzufügen

    Hallo zusammen

    Ich habe mich nun das erste Mal an ein typisiertes Dataset mit Datagridview gewagt. Ich habe:

    DataGridView: DataGridView
    DataSet: DataSetAudio
    BindingSource: BsAudio
    Tabelle: Audiofiles

    Lesen und schreiben mit ReadXML/WriteXML funktioniert soweit. Ich lese Datensätze wie folgt ein:

    VB.NET-Quellcode

    1. OpenfileDialog2.CheckFileExists = True
    2. OpenFileDialog2.Multiselect = True
    3. If OpenFileDialog2.ShowDialog = Windows.Forms.DialogResult.OK Then
    4. For i As Integer = 0 To OpenFileDialog2.SafeFileNames.Count() - 1
    5. Dim drv = DirectCast(BsAudio.AddNew(), DataRowView)
    6. Dim rwNew = DirectCast(drv.Row, DataSetAudio.AudiofilesRow)
    7. rwNew.Datei = OpenFileDialog2.SafeFileNames(i)
    8. rwNew.Pfad = OpenFileDialog2.FileNames(i)
    9. Next i
    10. End If


    Dies funktioniert soweit. Gibt es jedoch eine Möglichkeit, die Datensätze nicht am Schluss, sondern in der markierten Zeile im DGV hinzuzufügen?
    Ist das irgendwie mit BindingSource.Position zu bewerkstelligen oder brauche ich eine weitere Spalte im Dataset für die Position der Datensätze?
    Wie kann man generell Datensätze auf-/abwärts verschieben?

    Besten Dank für Eure Hilfe.

    Jenny
    Du arbeitest mit BsAudio.AddNew. Das fügt die neue Zeile ans Ende an. Stattdessen solltest Du die DataTable manipulieren. Diese bietet die Methode InsertAt an. Die BindingSource (BS) hat auch eine Insert-Methode. Aber wenn Du mit der DataTable arbeitest, hast Du immer auch gleich die typisierten AudiofilesRows und musst nicht casten. Und solange die BS keine Filterung oder Sortierung vornimmt, kannst Du auch die BS-Position als Einfügemarke nutzen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    AKP schrieb:

    Wie kann man generell Datensätze auf-/abwärts verschieben?
    Dieses Ansinnen entspricht nicht der reinen Lehre der Datenbänkerei.
    Datensätze sind grundsätzlich ungeordnet, und man kann sie beliebig sortieren.
    Aber eine bestimmte Reihenfolge händisch angeben und gar fixieren ist eiglich nicht vorgesehen.

    Klar funktioniert das trotzdem, v.a. wenn man einfach auf Platte schreibt.
    Aber zB bei einem Select von einer DB ist die Reihenfolge wie im Sortier-Kriterium angegeben oder andernfalls wie der DB-Provider denkt.
    Erst mal Danke für eure Antworten. Dann werde ich's mal mit der InsertAt-/Methode versuchen.

    Da es sich um eine einfache Playlist handelt, ist die Reihenfolge schon massgebend. Dies würde nun wieder auf eine zusätzliche Sortierspalte (z. B. Startnummer) schliessen.