2013-09-16 3 views
0

Я просто хочу создать Data Grid. Где первый и второй столбцы сетки данных предназначены для хранения одного значения и третьего столбца в виде поля со списком.Сделать конкретный столбец как поле со списком DataGridView

Код, который я попробовал это

Dim productGrid As New DataGridView   
    ProductGrid.Columns(0).Name = "CB" 
    ProductGrid.Columns(1).Name = "ProductGroup" 
    ProductGrid.Columns(2).Name = "Product" 
    Dim i As Integer 
    With ProductGrid 
     If .Rows.Count = 0 Then Exit Sub 
     i = 1 
     Dim objValueItems As New DataGridViewComboBoxCell 
     objValueItems.Items.Add("Server") 
     objValueItems.Items.Add("Standalone") 
     objValueItems.Items.Add("Demo") 
     objValueItems.Items.Add("Anywhere") 
     ProductGrid.Item(2, i).Value = objValueItems 
    End With 

Я получаю ошибку на "ProductGrid.Item (2, я) .Value = objValueItems" эта линия. Ошибка: «Индекс был за пределами допустимого диапазона.

ответ

2

Имейте в виду, что все ячейки ComboBox DGV Column имеют одинаковое содержимое, поэтому вы не назначаете список предметов данной ячейке, а всем им (до колонка). Вы должны включить это при добавлении данного столбца. Пример кода:

Dim productGrid As New DataGridView 
With productGrid 
    .Columns.Add("CB", "CB") 'Text-type column 
    .Columns.Add("ProductGroup", "ProductGroup") 'Text-type column 
    Dim objValueItems As New DataGridViewComboBoxColumn 
    With objValueItems 
     .Name = "Product" 
     .Items.Add("Server") 
     .Items.Add("Standalone") 
     .Items.Add("Demo") 
     .Items.Add("Anywhere") 
    End With 
    .Columns.Add(objValueItems) 'ComboBox-type column 
End With 
Смежные вопросы