4

我知道您可以将BindingSource对象与 DataGridView 一起使用。

是否可以在其中一列中有一个组合框并仍然利用BindingSource

4

1 回答 1

8

是的,它是 - 看看C# 中带有 DataGridView 的 ComboBox

将 ComboBox 与 DataGridView 结合使用不再那么复杂,但在进行一些数据驱动的软件开发时几乎是必须的。

在此处输入图像描述

我已经创建了一个像这样的 DataGridView。现在,我想在 DataGridView 中显示“Month”和“Item”而不是“MonthID”和“ItemID”。

本质上,本文描述的是将组合框与单独的绑定源绑定——在本例中,是一个验证表,存储位置MonthIDMonthName存储位置,月份名称基于原始数据中的 id 显示。

在这里,他设置了 Month 数据源,从月份表中进行选择,然后BindingSource从返回的数据中创建一个。

//Month Data Source
string selectQueryStringMonth = "SELECT MonthID,MonthText FROM Table_Month";
SqlDataAdapter sqlDataAdapterMonth = new SqlDataAdapter(selectQueryStringMonth, sqlConnection);
SqlCommandBuilder sqlCommandBuilderMonth = new SqlCommandBuilder(sqlDataAdapterMonth);
DataTable dataTableMonth= new DataTable();
sqlDataAdapterMonth.Fill(dataTableMonth);
BindingSource bindingSourceMonth = new BindingSource();
bindingSourceMonth.DataSource = dataTableMonth;

然后他将月份 ComboBoxColumn 添加到 DataGridView,使用上面创建DataSourceBindingSource

//Adding  Month Combo
DataGridViewComboBoxColumn ColumnMonth = new DataGridViewComboBoxColumn();
ColumnMonth.DataPropertyName = "MonthID";
ColumnMonth.HeaderText = "Month";
ColumnMonth.Width = 120;
ColumnMonth.DataSource = bindingSourceMonth;
ColumnMonth.ValueMember = "MonthID";
ColumnMonth.DisplayMember = "MonthText";
dataGridViewComboTrial.Columns.Add(ColumnMonth);

最后,他将 绑定DataGridView到原始数​​据。

于 2012-12-11T22:39:14.973 回答