一  需求介绍

一般像枚举类型的数据,我们在数据库里存储着诸如(1、2、3、4…)或者(“001”、“002”、“003”…)此类,但是界面上我们想要显示的是具体的文本内容,以便用户理解使用。所以在从数据库中加载出来的数据 DataTable 绑定到 DataGridView 上时,就需要其中一些枚举列采用下拉框,并绑定对应的枚举数据源。

二  具体实现

首先,如果 DataGridView 的 AutoGenerateColumns 为 true 时,在绑定 DataTable 到 DataGridView 上时,会自动生成绑定数据中的各列,且默认均为普通的 DataGridViewTextBoxColumn 。所以如果要设置 DataGridView 中的下拉列,首先要把 AutoGenerateColumns 设置为 false

  1 /// <summary>
  2 /// Sample
  3 /// DataGridView绑定DataTable,ComboBox列绑定enum枚举
  4 /// </summary>
  5 public MainForm()
  6 {
  7     InitializeComponent();
  8 
  9     DataTable dataTable = CreateDataTable();
 10     dataGridView.AutoGenerateColumns = true;// 默认设置
 11     dataGridView.DataSource = dataTable;
 12     // SetGridView(dataTable);
 13 }
 14 
 15 /// <summary>
 16 /// 构建数据源
 17 /// 可以从数据库读取出来构建DataTable数据源
 18 /// </summary>
 19 /// <returns>DataTable数据表</returns>
 20 public DataTable CreateDataTable()
 21 {
 22     DataTable dt = new DataTable();
 23     dt.Columns.Add(new DataColumn("Id", typeof(int)));
 24     dt.Columns.Add(new DataColumn("Name", typeof(string)));
 25     dt.Columns.Add(new DataColumn("EnumCol1", typeof(int)));
 26     dt.Columns.Add(new DataColumn("EnumCol2", typeof(string)));
 27     Random r = new Random();
 28     for (int i = 0; i < 50; i++)
 29     {
 30         DataRow dr = dt.NewRow();
 31         dr[0] = r.Next();
 32         dr[1] = "Name = " + r.Next();
 33         dr[2] = r.Next(1, 5);
 34         dr[3] = "EnumCol_" + r.Next(1, 5);
 35         dt.Rows.Add(dr);
 36     }
 37 
 38     return dt;
 39 }
View Code

相关文章:

  • 2021-11-08
  • 2022-12-23
  • 2021-06-15
  • 2021-11-29
  • 2022-12-23
  • 2022-02-08
  • 2022-02-08
  • 2022-02-08
猜你喜欢
  • 2021-10-10
  • 2021-09-18
  • 2022-02-28
  • 2022-12-23
相关资源
相似解决方案