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 类型一致
 }

 

posted @ 2025-12-30 08:59  家煜宝宝  阅读(4)  评论(0)    收藏  举报