vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Bestehende ComboBox in DataGridView befüllen 
Autor: stefanbla80
Datum: 30.09.20 16:18

Hallo zusammen,

Ich habe ein DataGridview, welches die Informationen aus einem anderen DataGridview übermittelt bekommt.
In den Settings des DGV habe ich eine Spalte (Spalte 12) von der einfachen TextBox auf eine Combobox umgeändert.
Diese würde ich nun gerne beim Laden des Formulars befüllen.

Was leicht geht ist einfach eine weitere Spalte hinzuzufügen.
 
        'Declare ComboBoxColumn
        Dim cbColumn As New DataGridViewComboBoxColumn
        cbColumn.Name = "Column ComboBox"
 
        'Add Values 
        For value As Integer = 0 To 5
            cbColumn.Items.Add("Value = " & value.ToString)
        Next
 
        'Add ComboBox 
        DataGridView_FollowUp.Columns.Add(cbColumn)
Was ich aber einfach nicht hin bekomme ich das Befüllen der von mir deklarierten Spalte 12, die eine Combobox-Spalte ist.

Grüße
Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bestehende ComboBox in DataGridView befüllen 
Autor: effeff
Datum: 01.10.20 15:07

Worauf willst Du da hinaus?

- Normalerweise hast Du eine DataTable, die als DataSource an ein DataGridview gehängt wird.

- Innerhalb dieses DataGridviews kannst Du nun einer Spalte sagen, dass sie als ComboBox-Spalte angezeigt wird.

- Die Value erhält die ComboBox-Spalte aus der DataTable.

- Aus einer zweiten DataTable kommen die Werte für die ComboBox, welche auswählbar sein sollen.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bestehende ComboBox in DataGridView befüllen 
Autor: stefanbla80
Datum: 01.10.20 15:41

Hallo,
Ich habe ein Formular mit einem DataGridView.
Dieses ist letztlich mit einer Access-Datenbank verknüpft.

Das zweite DataGridView bekommt beim Öffnen den Tools aus dem ersten DataGridView Daten übermittelt für z.B. einen FollowUp von Kundenprojekten.

Ich fülle also lediglich zur Ansicht das zweite DataGridview.
Und hierfür habe ich in den Eigenschaften des Views eine Spalte als ComboBox-Spalte vorab definiert.
Und genau diese Spalte mit den ComboBoxen würde ich gerne befüllen.

Grüße
Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bestehende ComboBox in DataGridView befüllen 
Autor: effeff
Datum: 01.10.20 18:43

Also, wenn Du eine DataGridViewColumn als DataGridViewComboBoxColumn deklariert hast in den Eigenschaften des DataGridView, sollte so etwas funktionieren:

 Dim cmbColumn As DataGridViewComboBoxColumn = DeinDataGridView.Columns(12)
 
With cmbColumn
            .Items.Add("2015")
            .Items.Add("2016")
            .Items.Add("2017")
            .Items.Add("2018")
            .Items.Add("2019")
            .Items.Add("2020")
End With
Bedenke, dass Deine Spalten in der Aufzählen mit 0 (Null) beginnen. Spalte 12 wäre bei Dir also die Column 11!

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bestehende ComboBox in DataGridView befüllen 
Autor: stefanbla80
Datum: 01.10.20 20:33

Habe schon einiges versucht - jedoch bekomme ich immer diese Fehlermeldung

DataGridView-Ausnahme
System.ArgumentException: Der DataGridViewComboBoxCell-Wert ist ungültig.

und dass ich eine DataGridViewTextBox nicht in eine Combobox umwandeln kann.

Nach ganz oft bestätigen von dieser Meldung und auch nur wenn der Eintrag in der Zelle gleich dem Eintrag in der Combobox ist geht es.

Aber halt nicht wenn der unterschiedlich ist.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bestehende ComboBox in DataGridView befüllen 
Autor: effeff
Datum: 01.10.20 21:39

OK. Beschreibe bitte, wie genau Du die Daten von einer DataGridView in die andere bekommst! Poste bitte Deinen Code!

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bestehende ComboBox in DataGridView befüllen 
Autor: stefanbla80
Datum: 02.10.20 08:16

Guten Morgen zusammen,

Beim Laden meines "FollowUp-Formulares" rufe ich die Funktion "FollowUp" auf.

Private Sub Form_FollowUp_Load(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles MyBase.Load
        FollowUp()
        Me.BringToFront()
 
        Dim cmbColumn As DataGridViewComboBoxColumn = _
          DataGridView_FollowUp.Columns(11)
        With cmbColumn
            .Items.Add("Stefan")
        End With
    End Sub
    Private Sub FollowUp()
        Dim myDate1 As Date = Format$(Me.DateTimePicker_StartDate.Value, _
          "yyyy-MM-dd")
        Dim myDate2 As Date = Format$(Me.DateTimePicker_EndDate.Value.AddDays( _
        0), "yyyy-MM-dd")
 
        Me.DataGridView_FollowUp.Rows.Clear()
        Me.DataGridView_FollowUp.AllowUserToAddRows = True
 
        For i = 0 To _
          Form_PlanningGuide.PlanningGuideDataDataGridView.Rows.Count - 1
            If Form_PlanningGuide.PlanningGuideDataDataGridView.Rows(i).Cells( _
            GetColumnNo("Date FollowUp")).Value IsNot DBNull.Value Then
                If Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                i).Cells(GetColumnNo("Date FollowUp")).Value <> "" Then
                    If Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                    i).Cells(GetColumnNo("Date FollowUp")).Value >= myDate1 And _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Date FollowUp")).Value <= myDate2 _
                        Then
                        Dim RowCount As Integer = _
                        DataGridView_FollowUp.RowCount - 1
                        DataGridView_FollowUp.Rows.Add()
                        DataGridView_FollowUp.BeginEdit(CBool(RowCount))
                        DataGridView_FollowUp.Rows(RowCount).Cells(0).Value = _
                          Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                          i).Cells(GetColumnNo("ID")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(1).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Country")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(2).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Contact comp." & _
                        "name")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(3).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Customer")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(4).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Land")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(5).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Project")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(6).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Version")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(7).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Description")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(8).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Inquiry")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(9).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Quotation")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(10).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Date FollowUp")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(11).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("PM")).Value.ToString()
                        DataGridView_FollowUp.Rows(RowCount).Cells(12).Value = _
                        Form_PlanningGuide.PlanningGuideDataDataGridView.Rows( _
                        i).Cells(GetColumnNo("Order")).Value.ToString()
                    End If
                End If
            End If
        Next
 
        Me.DataGridView_FollowUp.Update()
        Me.DataGridView_FollowUp.EndEdit()
        Me.DataGridView_FollowUp.AllowUserToAddRows = False
    End Sub
Hiermit fülle ich dann mein zweites DataGridView - was lediglich als Ansicht dient und den selben/gewohnten Style hat wie meine Haupttabelle.
In den Eigenschaften von DataGridView_FollowUp habe ich Column12 auf Combobox-Spalte definiert.
Evtl. kommt auch das Füllen der Combobox-Spalten mit Items zu früh/spät …?

Grüße
Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bestehende ComboBox in DataGridView befüllen 
Autor: effeff
Datum: 03.10.20 11:15

Dein Code sieht aus, als würdest Du ansonsten viel mit Excel machen.

Also: Man schreibt nicht direkt in ein DataGridView Daten hinein. Man schreibt Daten in eine DataTable und diese hängt man dann als DataSource an das DataGridView. Das erspart eine Menge Arbeit, ist übersichtlicher und leichter zu verwalten.

Trotzdem: Der Fehler liegt darin, dass Du nur Text an die ComboBoxColumn übergeben kannst, der vorher innerhalb einer Auflistung definiert ist!

Also: Erst die Auflistung definieren, dann das DataGridView befüllen und darauf achten, dass der Text für die ComboBox-Spalte innerhalb der Auflistung enthalten ist!

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bestehende ComboBox in DataGridView befüllen 
Autor: stefanbla80
Datum: 03.10.20 12:09

Excel: Das ist richtig …

Das mit dem DataGridView_FollowUp soll wirklich nur als "Hilfsansicht" dienen.
Die Daten für Hauptliste stehen in einem Table.


Habe einfach die Reihenfolge geändert - siehe da es geht.

=> Danke

Nur für den Fall der Fälle: Falls der Text für die Combobox-Spalte doch zur Auflistung abweichen sollte: Wie fange ich das dann ab? Ich vermute mal dass das durchaus passieren könnte.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bestehende ComboBox in DataGridView befüllen 
Autor: effeff
Datum: 03.10.20 12:33

//Nur für den Fall der Fälle: Falls der Text für die Combobox-Spalte doch zur Auflistung abweichen sollte: Wie fange ich das dann ab? Ich vermute mal dass das durchaus passieren könnte.//

Dann musst Du vorher prüfen, ob der einzutragende Wert bereits in der Auflistung ist und ihn ggf. hinzufügen...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel