Haben Sie datagridview, die 4 Spalten enthält, die manuell vom Ersteller erstellt wurden. 1., 2. und 3. Spalte sind nur Textbox-Spalten, aber die letzte Spalte ist als Combobox-Spalte markiert.DataGridView-Combobox-Spalte mit Datenquelle
Benutzer kann Zeilen hinzufügen, klickt auf einige Schaltfläche. Die Werte für die ersten drei Spalten stammen von einigen Textfeldern. Das Problem ist, ich muss combobx Spalte auffüllen, wenn Benutzer seine Zeile hinzufügen. Was ich versucht, so war weit wie folgt aus:
dgvMaterials.Rows.Add(material, rodzajName, rodzajID, new Variation().GetAll())
Beachten Sie, dass GetAll Funktion retreiving innerhalb Datentabelle Daten ID und den Namen. Die ID sollte als Wertelement und Name als Anzeigeelement markiert sein.
So einfach gesagt, Benutzer klicken Sie auf eine Schaltfläche in Formularbaum erste Spalte Felder aus einigen Textfelder füllen, und letzte Combobox-Spalte sollte durch Daten von GetAll gefüllt werden. Wie erreiche ich das?
Private Sub btnAddMatType_Click(sender As Object, e As EventArgs) Handles btnAddMatType.Click
try
Dim dt as DataTable
dt = New Variation().GetAll()
Dim cbo = CType(dgvMaterials.Columns(3), DataGridViewComboBoxColumn)
cbo.Items.AddRange(dt.AsEnumerable().Select(Function(s) s.Field(Of String)("Name")).ToArray())
Dim rodzajID as String = TreeMaterials.SelectedValue
Dim rodzajName as string = TreeMaterials.SelectedNode.Text
Dim material as string = TreeMaterials.SelectedNode.Parent.Text
dgvMaterials.Rows.Add(material, rodzajName, rodzajID)
Catch ex As Exception
msgbox(ex.ToString())
End Try
Gitter sehen, nachdem alle (keine Daten in Combo):
a) Was ist nichts (Mauszeiger)? Es muss "cbo" oder "dt" sein. Gibt es im DGV Design eine cbo? Haben Sie die Eigenschaft name auf "Wariacja" gesetzt? Beides würde bedeuten, dass cbo null ist. b) ** ** Übergeben Sie nicht den cbo in der 'Rows.Add', übergeben Sie den Wert dieser Eigenschaft, wenn es einen gibt. Beachten Sie in meinem, dass der erste einen vierten Datenelementpunkt hat, die anderen nicht. – Plutonix
@JimmyJimm Kompiliert das 'Dim cbo als DataGridViewComboBoxColumn = Me.Wariacja'? (oder wie auch immer ist der Name der ComboBoxColumn) – Slai
Beachten Sie, dass es zwei Klicks benötigt, um diese Dinge zu öffnen. Der erste Klick ist die ausgewählte Zeile/Zelle - Sie sehen den Zeilenkopf Pfeilsprung - der zweite öffnet die cbo – Plutonix