DataGridView-Zeile auswählen und in neuem DataGridView ausgeben

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von raphael.

    DataGridView-Zeile auswählen und in neuem DataGridView ausgeben

    Guten Tag allerseits,

    Ich bin noch ziemlich am Anfang mit dem Ganzen, deshalb bitte ich schon mal um Entschuldigung für etwaige Wirren...

    Also: ich arbeite im Visual Basic 2008 Express...

    Ich habe ein DataGridView, das über eine BindingSource an ein DataTable gebunden ist. Anwählen kann man nur ganze Zeilen.
    Ich möchte jetzt gern die angewählte Zeile samt Inhalten per Knopfdruck in ein neues (leeres) DataGridView ausgeben/kopieren.
    Ich habe schon einiges gefunden. Z.B. auch das, aber ich schaffe es nicht....

    Vielen Dank für eure Hilfe
    Raphael

    VB.NET-Quellcode

    1. Private Function CopyRow(ByVal row As DataGridViewRow) _
    2. As DataGridViewRow
    3. CopyRow = TryCast(row.Clone(), DataGridViewRow)
    4. For index As Int32 = 0 To row.Cells.Count - 1
    5. CopyRow.Cells(index).Value = row.Cells(index).Value
    6. Next
    7. End Function
    8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    9. DataGridView2.Rows.Add(CopyRow(DataGridView1.SelectedRows.Item(0)))
    10. End Sub


    So würde ich es machen

    Gruss mono
    Das ist meine Signatur und sie wird wunderbar sein!
    Hallo zusammen

    Ich konnte es selber lösen:

    VB.NET-Quellcode

    1. Dim dgvRow As New DataGridViewRow
    2. Dim dgvCell As DataGridViewCell
    3. dgvCell = New DataGridViewTextBoxCell()
    4. dgvCell.Value = DataGridView1.CurrentRow.Cells(Spaltenname).Value
    5. dgvRow.Cells.Add(dgvCell)
    6. dgvCell = New DataGridViewTextBoxCell()
    7. dgvCell.Value = DataGridView1.CurrentRow.Cells(Spaltenname2).Value
    8. dgvRow.Cells.Add(dgvCell)
    [/vb]

    So kann ich genau ansteuern, welche Zelle der ausgewählten Zeile in die leere DataGridView ausgegeben wird.

    Oh, hallo Mono

    Danke für deine Bemühungen, da hab ich ja gleichzeitig geposted. Werde deine Variante gleich ausprobieren.

    Liebe Grüsse
    Raphael
    is noch ne einfachere variante, hatte mir sehr geholfen

    For i=0 to dgv1.SelectedRows.Count-1
    Dim row As DataRow = dt2.NewRow
    row("Col1") = dgv1.SelectedRows(i).Cells("Col1").Value
    row("Col2") = dgv1.SelectedRows(i).Cells("Col2").Value
    dt2.Rows.Add(row)
    Next

    Am Schluss die DataTable 2 neu in das dgv2 laden.
    Hallo Mono und Pitballz

    Danke für eure Hilfe, beide Lösungen konnte ich umsetzen und ich habe wieder was dazugelernt. hehe

    Ihr könnt mir bestimmt auch gleich noch weiterhelfen.
    Ich möchte über ein Clickevent ermöglichen, die zugefügte Zeile (ausgewählt) wieder zu löschen.
    Das konnte ich so lösen:

    VB.NET-Quellcode

    1. datagridview.Rows.Remove(datagridview.CurrentRow)


    Das klappt auch so weit. Aber sobald keine Zeilen mehr im DGV sind und der löschen-Button noch einmal gedrückt wird, schmiert das Programm logischerweise ab.
    Wie kann ich das verhindern? Ich habe mit IF Nothing versucht, aber es hat nicht geklappt.

    Danke für eure Hilfe
    Raphael
    Ich würde es über IF Datagridview.Selectedrows.count > 0 then..

    abfange, alternativ wäre ein Try Catch Block.Versuche ich persönlich aber immer zu vermeiden wenn man Fehler selber abfangen kann.

    Gruss Mono
    Das ist meine Signatur und sie wird wunderbar sein!