Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.
Закрыт 1 год назад.
Делал всё по инструкции. В Combobox ячейках пусто и ничего не выпадает. Чего мне не хватает?
private DataGridViewComboBoxColumn CreateComboBoxColumn()
{
DataGridViewComboBoxColumn column =
new DataGridViewComboBoxColumn();
{
column.HeaderText = "Products";
column.DropDownWidth = 90;
column.Width = 90;
}
return column;
}
private void Form1_Load(object sender, EventArgs e)
{
DataGridViewComboBoxColumn comboboxColumn = CreateComboBoxColumn();
dataGridView3.Columns.Add(comboboxColumn);
dataGridView3.Rows.Add(3);
for (int i = 0; i < 3; i++)
{
List<string> ordrerProducts = new List<string>();
ordrerProducts.Add("A"+i);
ordrerProducts.Add("B"+i);
ordrerProducts.Add("C"+i);
var cell = new DataGridViewComboBoxCell();
cell.Items.AddRange(ordrerProducts);
//второй вариант (тоже не работает)
//cell.DataSource = ordrerProducts;
dataGridView3[0, i] = cell;
}
}
Преобразуйте список в массив:
cell.Items.AddRange(ordrerProducts.ToArray());
У DataGridViewComboBoxCell.ObjectCollection.AddRange есть две перегрузки, но ни одна из них не принимает ни List ни IEnumerable. В результате если передать список, то он будет воспринят как одно значение.
Исполняемый пример:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
class Program
{
[STAThread]
static void Main()
{
var grid = new DataGridView {Dock = DockStyle.Fill};
grid.Columns.Add("Column", "Column");
grid.Rows.Add(3);
for (int i = 0; i < 3; i++)
{
var products = new List<object> { "A" + i, "B" + i, "C" + i };
var cell = new DataGridViewComboBoxCell();
cell.Items.AddRange(products.ToArray());
grid[0,i] = cell;
}
var form = new Form();
form.Controls.Add(grid);
Application.Run(form);
}
}
Результат:
Продвижение своими сайтами как стратегия роста и независимости