有的時候需要動態的添加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的結果逐行添加進去。