DGV Vom Designer erstellte Combobox füllen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Westerwälder.

    DGV Vom Designer erstellte Combobox füllen

    Hallo,
    versuche schon seit Stunden eine Combobox in einem Datagridview zu befüllen.
    DGV wird mit dem Designer erstellt.

    Versuch A)

    VB.NET-Quellcode

    1. Dim Combo_Aktion As New DataGridViewComboBoxCell
    2. With Combo_Aktion
    3. .DataSource = Nothing
    4. .DataSource = Me.DT_Aktion
    5. .ValueMember = "Nummer"
    6. .DisplayMember = "Bezeichnung"
    7. End With
    8. Me.Zeile = -1
    9. With Me.DGV_Verbrauch
    10. .Rows.Clear()
    11. For Me.I = 0 To PPD.DataTabelle.Rows.Count - 1
    12. PPD.DataZeile = PPD.DataTabelle.Rows(Me.I)
    13. If CInt(PPD.DataZeile("Monat")) = Me.Monat Then
    14. Me.VDatum = CDate(PPD.DataZeile("Datum").ToString)
    15. Me.Zeile += 1
    16. Me.DGV_Verbrauch.Rows.Add()
    17. Me.DGV_Verbrauch.Rows(Me.Zeile).Cells("DGID").Value = PPD.DataZeile("ID")
    18. Me.DGV_Verbrauch.Rows(Me.Zeile).Cells("DGDatum").Value = PPD.DataZeile("Datum")
    19. Me.DGV_Verbrauch.Rows(Me.Zeile).Cells("DGWochentag").Value = Func.WochentagName(Me.VDatum.DayOfWeek)
    20. Me.DGV_Verbrauch.Rows(Me.Zeile).Cells("DGZS").Value = PPD.DataZeile("StromZaehler")
    21. Me.DGV_Verbrauch.Rows(Me.Zeile).Cells("DGVS").Value = PPD.DataZeile("StromVerbrauch")
    22. Me.DGV_Verbrauch.Rows(Me.Zeile).Cells("DGZP").Value = PPD.DataZeile("PelletsZaehler")
    23. Me.DGV_Verbrauch.Rows(Me.Zeile).Cells("DGVP").Value = PPD.DataZeile("PelletsVerbrauch")
    24. Combo_Aktion = DirectCast(Me.DGV_Verbrauch.Rows(Me.Zeile).Cells("DGAK"), DataGridViewComboBoxCell)
    25. ' Me.DGV_Verbrauch.Rows(Me.Zeile).Cells("DGAK").Value = 0
    26. End If
    27. Next
    28. End With


    Versuch B)

    VB.NET-Quellcode

    1. Private Sub DGV_Verbrauch_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DGV_Verbrauch.EditingControlShowing
    2. If Me.Halt Then Exit Sub
    3. Dim cmb = TryCast(e.Control, DataGridViewComboBoxEditingControl)
    4. With cmb
    5. .DataSource = Nothing
    6. .DataSource = Me.DT_Aktion
    7. .ValueMember = "Nummer"
    8. .DisplayMember = "Bezeichnung"
    9. End With
    10. End Sub


    In beiden Fällen bleibt die Combobox leer.

    DT_Aktion ist eine Datatable.
    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Westerwälder“ ()

    am einfachsten ist das im Gesamtzusammenhang von Databinding

    vier Views-Videos
    Da ist gezeigt, wies geht, wenn man weiß wies geht. ;)

    Es sind also einige Vorraussetzungen zu bewältigen - wenn die fehlen, kann man dir evtl garnet wirklich weiter helfen.

    Wie sieht denn dein Datenmodell aus - Screenshot vom typDataset im Dataset-Designer?
    Guten Morgen und danke für die Antwort.
    Habe in meinem Datenmodell vieles gebunden. In dem o.a. Fall muss ich in einem DGV Daten aus unterschiedlichen Tabellen anzeigen.
    Konnte mir helfen, in dem ich die Combobox aus dem DGV (im Designer) entfernt habe und sie zur Laufzeit anfüge.
    So funktioniert es zumindest.
    Gruß Markus
    OK, ich nenne es mal Databinding light

    Bsp.:

    VB.NET-Quellcode

    1. Dim Formularfilter = From order In Kalender.DataTabelle.AsEnumerable()
    2. Where order.Field(Of String)("Type") = Me.Modus.ToString
    3. Select order
    4. Kalender.Filterdaten = Formularfilter.AsDataView
    5. Kalender.DataQuelle.DataSource = Kalender.Filterdaten
    6. With Me.DGV_Einzeltermine
    7. .DataSource = Kalender.DataQuelle
    8. .MultiSelect = False
    9. .Columns("ID").Visible = False
    10. .Columns("Type").Visible = False
    11. .Columns("TypeName").Visible = False
    12. .Columns("Anwenden").HeaderText = "Ak."
    13. .Columns("Anwenden").AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
    14. With .Columns("Bezeichnung")
    15. .HeaderText = "Termin - Bezeichnung"
    16. .Visible = True
    17. .AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
    18. End With


    Arbeite nicht mit Datasets sondern nur mit Datatable und Bindingsource.
    Gruß Markus