C#動態添加DataGridView列和行

在WinForm的C#應用中,DataGridView作爲重要的數據組織和顯示控件,作用極大。在DataGridView的數據組織時,一般都採用數據源綁定的方式(DataSource)與DataSet、Datatable或List來組織,很少出現不使用DataSource而動態添加的方式。所以網上有關這方面的介紹比較少或太簡單,並且實用的例子很少。這次有同學有個需求問我要一個處理這種動態添加列和添加列的方法。下面就選取涉及動態組織DataGridView實例部分列示如下,供參考:

        private void GetDGVData()
        {
            dataGridView1 = DynamicCreationDGV(dataGridView1);
        }

        private DataGridView DynamicCreationDGV(DataGridView dgv)
        {
            if (dgv == null)
                return null;
            if (dgv.ColumnCount != 0)
                dgv.Columns.Clear();    //清除現有列

            #region 組織 DataGridViewColumn
            for (int i = 0; i < 6; i++) //指定總列數
            {
                //列名和列頭名
                string dgvColName = "Col"+i;
                string dgvColHeaderText = string.Empty;

                if (i<=4)   //設置部分列頭名
                    dgvColHeaderText = "Header_"+i;

                DataGridViewColumn dgvcolumn = new DataGridViewColumn();
                if (i == 3) //特殊列設置
                {
                    dgvcolumn = new DataGridViewCheckBoxColumn();   //指定列類型
                    dgvcolumn.ValueType = typeof(bool);             //指定列數據類型
                }
                else
                {
                    dgvcolumn = new DataGridViewTextBoxColumn();    //列默認類型
                    dgvcolumn.ValueType = typeof(string);           //列數據類型默認字符串
                }
                if (i == 5) //指定列數據類型
                    dgvcolumn.ValueType = typeof(int);

                dgvcolumn.Name = dgvColName;                        //列名
                dgvcolumn.HeaderText = string.IsNullOrEmpty(dgvColHeaderText) ? dgvColName : dgvColHeaderText;  //列頭名

                dgv.Columns.Add(dgvcolumn); //增加列
            }
            #endregion
            #region 組織DataGridViewRow
            for (int i = 0; i < 10; i++)    //組織指定數據行
            {
                DataGridViewRow dr = new DataGridViewRow();
                dgv.Rows.Add(dr);           //增加行
                for (int j = 0; j < dgv.ColumnCount-1; j++) //部分列
                {
                    if(j==3)                //特殊數據列。此處可據列的ValueType屬性來處理不同類型數據及格式
                        dgv.Rows[i].Cells[j].Value = true;
                    else
                        dgv.Rows[i].Cells[j].Value = "Cell" + i + "_" + j;
                }
                dgv.Rows[i].Cells[dgv.ColumnCount - 1].Value = dgv.ColumnCount - 1; //最後一列
            }
            #endregion
            return dgv;
        }

此例是根據實例提取,並依例親測,無問題通過。您在實際應用時可根據需要修改即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章