1. 程式人生 > >datagridview動態新增列和行以及新增之後重新整理操作

datagridview動態新增列和行以及新增之後重新整理操作

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