Как программно в dataGridView сделать поле ComboBox?
Ниже приведённый код к результату не приводит.
DataTable dt;
OleDbConnection connection;
OleDbDataAdapter adapter;
OleDbCommandBuilder commandBuilder;
static string catBD = @"z:\vs\csharp\prb\db_GridVAccess.accdb";
string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", catBD);
string sql = "SELECT * FROM tbl_01_Combox";
public Form5()
{
InitializeComponent();
using (OleDbConnection cn = new OleDbConnection())
{
connection = new OleDbConnection(connectionString);
connection.Open();
adapter = new OleDbDataAdapter(sql, connection);
commandBuilder = new OleDbCommandBuilder(adapter);
// На соновании DataTable
dt = new DataTable();
adapter.Fill(dt);
dataGridView1.DataSource = dt;
}
}
private void Form5_Load(object sender, EventArgs e)
{
// Ширина поля
dataGridView1.Columns[0].Width = 50;
// Комбокс
string[] countrys = new string[] { "США", "ОАЭ", "ЮАР" };
(dataGridView1.Columns[1] as DataGridViewComboBoxColumn).DataSource = countrys;
}
Как-то так:
string[] countrys = new string[] { "США", "ОАЭ", "ЮАР" };
var oldcol = dataGridView1.Columns[1];
var newcol = new DataGridViewComboBoxColumn();
newcol.HeaderText = oldcol.HeaderText;
newcol.Name = oldcol.Name;
newcol.DataSource = countrys;
newcol.DataPropertyName = oldcol.DataPropertyName;
dataGridView1.Columns.RemoveAt(1);
dataGridView1.Columns.Insert(1,newcol);
Недостаток: если значение в таблице отсутствует в списке для ComboBox, при каждом нажатии на DataGridView валится ошибка (необходимо обработать событие DataError).
Чтобы ComboBox раскрывался по первому клику, добавьте такой обработчик для события CellClick в DataGridView:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
DataGridViewCell cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (cell is DataGridViewComboBoxCell)
{
dataGridView1.BeginEdit(false);
(dataGridView1.EditingControl as DataGridViewComboBoxEditingControl).DroppedDown = true;
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
пишу приложение WPF с веб сервисом wfc, в веб сервесе модель базы данных entity framework, когда пытаюсь передать запрос из клиента на добавление записи...