datagridview動態新增列和行以及新增之後重新整理操作
阿新 • • 發佈:2019-01-22
有的時候需要動態的新增datagridview 的列名:
在動態新增行和列的時候最後不要直接給datagridview 賦值DataSource。直接賦值DataTable往往會出現問題。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);
也要動態的將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的結果逐行新增進去。