2016-07-12 16 views
0

Haben Sie datagridview, die 4 Spalten enthält, die manuell in datagridview creator erstellt wurden. 1., 2. und 3. Spalte sind nur Textbox-Spalten, aber die letzte Spalte ist als Combobox-Spalte markiert. Auf meinem Formular habe ich Knopf, wenn Benutzer darauf klickt, wird neue Zeile zu Datagridview hinzugefügt. Für die ersten drei Spalten werden Daten von einigen Variablen aufgefüllt, und die letzte Combobox-Spalte sollte für den Benutzer aus der Datenquelle aufgefüllt werden, damit er seinen Wert daraus auswählen kann. . Das Problem ist, ich habe Probleme mit dieser Combobox Spalte und so könnte es in weitem nicht füllt Dies ist mein eigentlicher CodeDatagridview mit Combobox kann nicht ausgefüllt werden

Private Sub myButton_Click(sender As Object, e As EventArgs) Handles btnAddMatType.Click 

Dim dt as DataTable 
dt = New Variation().GetAll() 'returning Ids and Names 

       Dim cbo = CType(dgvMaterials.Columns(3), DataGridViewComboBoxColumn) 
       cbo.Items.AddRange(dt.AsEnumerable().Select(Function(s) s.Field(Of String)("Name")).ToArray()) 

      try 
       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) 
End Sub 

auch versucht, dies:

Private Sub myButton_Click(sender As Object, e As EventArgs) Handles btnAddMatType.Click 
Dim dt as DataTable 
dt = New Variation().GetAll() 'returning Ids and Names 
Dim cbo = CType(dgvMaterials.Columns(3), DataGridViewComboBoxColumn) 
cbo.DataSource = dt 
cbo.ValueMember = "Id" 
cbo.DisplayMember = "Name" 
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) 
End Sub 

In beiden Fällen Klicks jedes Mal Benutzer Schaltflächenzeile wird zu Datagrid hinzugefügt, aber die Combobox der letzten Spalte ist leer. Wie löst man das?

+0

Wenn es mehr als 1 DGV auf dem Formular ist sicher, dass Sie die richtigen zugreifen. Ansonsten wissen wir, dass die Daten in der Artikelsammlung enthalten sind. Stellen Sie sicher, dass der Benutzer weiß, dass er auf 2ce klicken muss, um das CBO zu öffnen (beim ersten Mal wird nur die Zeile ausgewählt). Als letzten Ausweg öffnen Sie den Designer, entfernen Sie die CBO-Spalte, speichern Sie das Projekt, und fügen Sie es dann wieder ein - vielleicht setzen Sie versehentlich eine Eigenschaft, die verhindert, dass sie funktioniert. – Plutonix

+0

... zum Beispiel, wenn Sie versehentlich die cbo-Spalte im Spalteneditor auf ReadOnly gesetzt haben, wird sie nicht geöffnet – Plutonix

Antwort

0

Versuchen Sie, diese Linie für Asociate Ihrer comboBox auf die gewünschte Spalte hinzuzufügen:

dgvMaterials.Columns.Insert(3, cbo) 
Verwandte Themen