c# datagridview 绑定数据源怎么用下拉框并
时间: 2025-07-05 11:02:23 浏览: 5
### C# 中 DataGridView 绑定数据源并使用 ComboBox 下拉框
在 C# 应用程序中,当需要将 `DataGridView` 控件与数据源绑定,并且其中某些列为组合框 (`ComboBox`) 类型时,可以按照如下方式进行设置。
#### 创建数据模型类
首先定义两个用于表示基础数据和下拉选项的数据模型类:
```csharp
public class Product {
public int Id { get; set; }
public string Name { get; set; }
}
public enum Category {
Electronics,
Clothing,
Food
}
```
#### 设置 DataGridView 列属性
创建 `DataGridView` 并配置其列以支持 `ComboBox` 功能。这里通过编程方式添加一列作为 `ComboBox`:
```csharp
// 添加一个普通的文本显示列
dataGridView.Columns.Add(new DataGridViewTextBoxColumn() {
DataPropertyName = "Name",
HeaderText = "Product"
});
// 添加一个组合框类型的列来展示类别信息
var categoryColumn = new DataGridViewComboBoxColumn();
categoryColumn.HeaderText = "Category";
categoryColumn.Name = "Category";
// 将枚举值转换成列表形式供组合框使用
Array values = Enum.GetValues(typeof(Category));
foreach (Category value in values) {
categoryColumn.Items.Add(value);
}
// 关联字段名以便于后续操作
categoryColumn.DataPropertyName = nameof(Product.Id);
// 把新创建好的组合框加入到表格视图里去
dataGridView.Columns.Add(categoryColumn);
```
#### 数据填充逻辑
最后一步就是向 `DataGridView` 提供实际的产品数据集以及初始化每一行对应的默认分类项:
```csharp
List<Product> products = GetDataFromDatabaseOrOtherSource();
// 填充产品数据至 DataGridView 的 DataSource 属性
dataGridView.DataSource = products;
// 遍历所有行, 对每行的第一个单元格(即名称), 设定初始选中的组合框条目.
for(int i=0;i<products.Count;i++) {
var row = dataGridView.Rows[i];
// 这里的假设是数据库返回的结果已经包含了产品的Id和Category之间的映射关系,
// 如果不是这种情况,则需额外处理。
object selectedValue = Convert.ToInt32(products.ElementAt(i).Id);
((DataGridViewComboBoxCell)row.Cells["Category"]).Value = selectedValue;
}
```
上述代码片段展示了如何在一个 Windows Forms 或 WPF 应用程序中实现带有 `ComboBox` 列的 `DataGridView`, 同时也说明了怎样将其与自定义对象集合相连接[^1]。
阅读全文
相关推荐



















