2016-07-12 6 views
0

Имейте datagridview, которое содержит 4 столбца, созданные вручную в создателе datagridview. 1-й, 2-й и 3-й столбцы являются только столбцами текстового поля, но последний помечен как comboboxcolumn. В моей форме у меня есть кнопка, когда пользователь нажимает на нее, новая строка добавляется в datagridview. Для первых трех столбцов данные заполняются от некоторых переменных, и последний столбец combobox должен быть заполнен для пользователя из источника данных, чтобы он мог выбрать из него свое значение. . Проблема у меня есть проблемы с этой колонки выпадающего списка до сих пор не могли заполнить его Это мой фактический кодDatagridview с combobox не может заполнить

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 

Пробовал также это:

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 

В обоих случаях каждый раз, когда пользователь нажимает строка строки добавляется в datagrid, но последнее поле со списком столбцов пусто. Как это решить?

+0

Если есть больше чем 1 DGV по форме, убедитесь, что вы обращаетесь правильной. В противном случае мы знаем, что данные находятся в коллекции элементов. Убедитесь, что пользователь знает, чтобы нажать 2ce, чтобы открыть CBO (первый раз просто выбирает строку). В качестве последнего средства откройте конструктор, удалите столбец CBO, сохраните проект, затем добавьте его снова - возможно, вы случайно установили какое-то свойство, которое мешает ему работать. – Plutonix

+0

... например, если вы случайно установили столбец cbo в ReadOnly в редакторе столбцов, который он не откроет – Plutonix

ответ

0

Попробуйте добавить эту строку для asociate вашего COMBOBOX разыскиваемых колонок:

dgvMaterials.Columns.Insert(3, cbo) 
Смежные вопросы