winform datagridview控件使用

最近做项目时,显示查询结果总需要绑定到datagridview控件上显示,总结了给datagridview绑定数据的方式,以及导出datagridview数据到excel表格,如有错误请多指教

1.直接绑定数据源,可以绑定的数据格式有List<T>,DataTable,DataSet等,

this.dataGridView1.DataSource = list;

this.dataGridView1.DataSource = table;

this.dataGridView1.DataSource =ds.Tables["表名"];

2.手动绑定datagridview指定列的数据,datagridview列如下图:

绑定数据代码如下:

DataTable dt = cdh.checkDB_typeValue(list_rd);
if (dt.Rows.Count>0)
            {
                //dataGridView2.DataSource = dt;
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataGridViewRow dr = new DataGridViewRow();
                    dataGridView2.Rows.Add(dr);
                    dataGridView2.Rows[i].Cells["档案类型"].Value = dt.Rows[i]["档案类型"].ToString();
                    dataGridView2.Rows[i].Cells["字段"].Value = dt.Rows[i]["字段"].ToString();
                    dataGridView2.Rows[i].Cells["错误类型"].Value = dt.Rows[i]["错误类型"].ToString();
                    dataGridView2.Rows[i].Cells["错误数据"].Value = dt.Rows[i]["错误数据"].ToString();
                    dataGridView2.Rows[i].Cells["档案号"].Value = dt.Rows[i]["档案号"].ToString();
                }
            btn_export.Enabled = true;
            }
绑定datagridview数据

3.自动生成datagridview控件并绑定数据和单元格点击事件

foreach (KeyValuePair<string, List<string>> item in ckImageMethod.errorFiles)
                {
                    //实例化tabpage对象
                    TabPage tpage = new TabPage();

                    tpage.Text = item.Key;
                    tpage.AutoScroll = true;
                    //实例化datagridview对象
                    DataGridView dgv = new DataGridView();
                    dgv.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
                    dgv.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
                    dgv.Location = new System.Drawing.Point(3, 3);
                    dgv.Size = new System.Drawing.Size(tabControl2.Width - 15, tabControl2.Height - 35);
                    //给datagridview添加单元格点击事件
                    dgv.CellContentClick += Dgv_CellContentClick;
                    //给datagridview添加文本列
                    DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
                    col1.HeaderText = "文件名";
                    DataGridViewTextBoxColumn col2 = new DataGridViewTextBoxColumn();
                    col2.HeaderText = "文件路径";
                    //添加按钮列
                    DataGridViewButtonColumn col3 = new DataGridViewButtonColumn();
                    col3.HeaderText = "操作";
                    col3.Name = "btnModify";
                    col3.DefaultCellStyle.NullValue = "打开文件";
                    dgv.Columns.Add(col1);
                    dgv.Columns.Add(col2);
                    dgv.Columns.Add(col3);

                    foreach (string filePath in item.Value)
                    {
                        string path = filePath;
                        //给datagridview添加一行数据,因为第三列时按钮,所以不添加值也会默认添加按钮
                        dgv.Rows.Add(path.Substring(path.LastIndexOf('\\') + 1), path);
                    }
                    //添加datagridview控件到tabpage中
                    tpage.Controls.Add(dgv);
                    //添加tabpage到tabControl中
                    tabControl2.TabPages.Add(tpage);
                }    
后台添加datagridview控件并绑定数据

 单元格点击事件:

private void Dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView dgv = sender as DataGridView;
            //点击button按钮事件
            if (dgv.Columns[e.ColumnIndex].Name == "btnModify" && e.RowIndex >= 0)
            {
                if (e.RowIndex == (dgv.RowCount - 1))
                {
                    return;
                }
                //说明点击的列是DataGridViewButtonColumn列
                string path = dgv.Rows[e.RowIndex].Cells[1].Value.ToString();
                if (Directory.Exists(path))
                {
                    //打开文件夹
                    System.Diagnostics.Process.Start(path);
                }
                else
                {
                    //打开文件所在文件夹
                    DirectoryInfo fi = new DirectoryInfo(path);
                    System.Diagnostics.Process.Start(fi.Parent.FullName);
                }
            }
        }
单元格点击事件
 

猜你喜欢

转载自www.cnblogs.com/Li232/p/10813330.html