Datagridview 下拉选项使用对象列表
以前使用下拉都是用枚举,这次使用对象集合来显示下拉,这样显示更加自定义,不像枚举那样固定
List<User> users = new List<User>();
// 假设角色列表 var roles = new List<Role> { new Role { Id = 1, Name = "管理员" }, new Role { Id = 2, Name = "编辑" }, new Role { Id = 3, Name = "访客" } }; // 创建 ComboBox 列 DataGridViewComboBoxColumn roleColumn = new DataGridViewComboBoxColumn(); roleColumn.HeaderText = "角色"; //roleColumn.Name = "RoleId"; // 对应数据行中的属性名 roleColumn.DataSource = roles; roleColumn.DisplayMember = "Name"; // 显示给用户的文本 roleColumn.ValueMember = "Id"; // 实际存储的值 roleColumn.DataPropertyName = "RoleId"; // 对应数据行中的属性名 dataGridView1.Columns.Add(roleColumn); users = new List<User> { new User { Id = 1, Name = "张三", RoleId = 1 }, new User { Id = 2, Name = "李四", RoleId = 3 } }; dataGridView1.AutoGenerateColumns = false; // 手动控制列 // 添加普通列 dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { Name = "Id", HeaderText = "编号" }); dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { Name = "Name", HeaderText = "姓名" }); //// 添加上面创建的 ComboBox 列 //dataGridView1.Columns.Add(roleColumn); dataGridView1.DataSource = users;
public class Role { public int Id { get; set; } public string Name { get; set; } } public class User { public int Id { get; set; } public string Name { get; set; } public int RoleId { get; set; } // 必须与 ValueMember 类型一致 }

浙公网安备 33010602011771号