有的时候需要动态的添加datagridview 的列名:
System.Windows.Forms.DataGridViewTextBoxColumn[] Column = new DataGridViewTextBoxColumn[columnNum];
for (int i = 0; i < columnNum; i++)
{
Column[i] = new DataGridViewTextBoxColumn();
}
Column[0].HeaderText = "检验单编号";
Column[0].Name = "检验单编号";
Column[0].ReadOnly = true;
Column[0].DefaultCellStyle.BackColor = Color.LightSteelBlue;
Column[0].ReadOnly = true;
Column[1].HeaderText = "样本编号";
Column[1].Name = "样本编号";
int j = 2;
foreach (DataRow row in dt.Rows)
{
if (j < columnNum)
{
Column[j].HeaderText = row["QCITEM_NAME"].ToString();
Column[j].Name = row["QCITEM_NAME"].ToString();
j++;
}
}
this.dgv.Columns.AddRange(Column);
this.ResumeLayout(false);
在动态添加行和列的时候最后不要直接给datagridview 赋值DataSource。直接赋值DataTable往往会出现问题。
也要动态的将DataTable转换为逐行添加数据
if (oldRowNum > 0)
{
foreach (DataRow row in ddt.Rows)
{
object[] Array = new object[columnNum];
for (int i = 0; i < columnNum; i++)
{
Array[i] = row[i];
}
dgv.Rows.Add(Array);
}
}
还有一个重点就是在给datagridview 动态添加列的时候在添加完数据需要刷新,并清空datagridview 所有内容。
dgv.Columns.Clear();
清空完成之后再Datatable的结果逐行添加进去。