| |
VB.NET - Ein- und UmsteigerBestehende 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 | |
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 | |
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 | |
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 | |
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. | |
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 | |
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 | |
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 | |
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. | |
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 | |
| 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 |
|
|
Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|