Spalte im DGV als Combobox mit DataTable

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Tukuan.

    Spalte im DGV als Combobox mit DataTable

    Moin Forum,

    ich habe folgendes Problem und finde irgendwie nirgendwo nichts was mir weiter helfen könnte...
    Ich möchte, dass ein Nutzer in einem DataGridView Daten eingeben kann, die ich in einer Datentabelle verwalte.
    In einer Spalte soll der Nutzer nur die Werte des Enums angeben können -> ideal für ne ComboBox dachte ich mir.
    Allerdings kann ich irgendwie die Spalte 5 nicht in eine ComboBox umwandelt. Die letzte Zeile im Code funktioniert natürlich so nicht.
    Aber wie geht das?

    VB.NET-Quellcode

    1. Private Enum KindOfChanges
    2. None
    3. Frequency
    4. Amplitude
    5. PhaseShift
    6. End Enum
    7. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    8. dt.Columns.Add("Name", GetType(String))
    9. dt.Columns.Add("Frequency", GetType(Double))
    10. dt.Columns.Add("Amplitude", GetType(Double))
    11. dt.Columns.Add("AmpUnit", GetType(String))
    12. dt.Columns.Add("Change", GetType(Boolean))
    13. dt.Columns.Add("Type", GetType(KindOfChanges))
    14. DataGridView1.DataSource = dt
    15. dt.Rows.Add("Hallo", 50.1, 2300, "Volt", True, 1)
    16. DataGridView1.Columns(5).DefaultHeaderCellType = DataGridViewComboBoxCell
    17. End Sub


    Und dann hab ich noch das Problem, dass der User in Spalte 2 und 3 nur Zahlen eingeben soll.
    Wie mache ich das? Kennt jemand das korrekte Ereignis.

    Vielen Dank schon mal vorwech
    Liebe Grüße
    Tukuan
    Hallo,

    du könntest das Aussehen im Designer (ColumnType auf DataGridViewTextBoxColumn) ändern.

    Oder:


    VB.NET-Quellcode

    1. DataGridView1.Columns.RemoveAt(5)
    2. DataGridView1.Columns.Insert(5, New DataGridViewComboBoxColumn)


    mit diesem Code kannst du die Spalte löschen und eine neue Comboboxcolumn erstellen. Die Daten sind aber so auch weg.
    Du musstest die Daten in ein Array zwischen speichern und wieder laden.



    jannik