说明:动态添加字段,放置于DataGridView已存在字段的中间部位,比如目前已经有两个字段 ID,Name,那么再增加一个Age字段,此时Age显示的位置在ID与Name中间。文中有部分代码是结合其他博主的资料,谢谢提供。
- 创建一个窗体项目,添加一个dgv,button,textbox控件
- 代码片段
private void TESTDGV_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = CreateTable();
}
private DataTable CreateTable()
{
DataTable dt = new DataTable(); //创建一个空表
DataColumn column = new DataColumn(); //创建一个空列
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
dt.Columns.Add(column);
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "Name";
dt.Columns.Add(column);
column = new DataColumn();
column.DataType = Type.GetType("System.Int32");
column.ColumnName = "Age";
dt.Columns.Add(column);
DataRow row = dt.NewRow(); //创建行
row["id"] = 0;
row["Name"] = "张三";
row["AGE"] = 118;
dt.Rows.Add(row); //显示
return dt;
}
private void button1_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(this.textBox1.Text))
{
DataGridViewComboBoxColumn column1 = new DataGridViewComboBoxColumn();
column1.Name = this.textBox1.Text;
column1.DataPropertyName = this.textBox1.Text;//对应数据源的字段
column1.HeaderText = this.textBox1.Text;
column1.Width = 80;
this.dataGridView1.Columns.Add(column1);
if (dataGridView1.Columns.Count % 2 == 0)
{
column1.DisplayIndex = (dataGridView1.Columns.Count / 2) - 1;
}
else
{
column1.DisplayIndex = ((dataGridView1.Columns.Count + 1) / 2) - 1;
}
dataGridView1.Refresh();
}
else
{
MessageBox.Show("未输入添加列名!");
}
}
- 结果示意
不足的地方就是,没有实现添加一个下拉字段的时候,赋值下拉选项。