关于C#的DataGridView设置了DataSource后Rows无值问题

前言

今天写一个导出到Excel表的东西,之前也写过,以前导出都是将界面上的DataGridView中数据导出,没有任何问题,然而今天的导出场景是在界面是点击导出按钮,直接在数据库中查询符合条件的数据导出,不须要显示在界面上。数据库

本文如有出入,请指正——来自小渣渣的颤抖
客官可移步小站查看本文http://fanjiajia.cn/2019/07/08/Cplusplus/flx1/this

实现及问题

直接看解决便可debug

实现

由于项目中有公用的导出方法,只须要传递一个DataGridView参数便可,因此确定是将查出来的DataTable转成一个DataGridView,之前都是直接在WinForm中拖,如今确定是直接new一个。code

// 新建一个DataGridView对象
DataGridView dgv = new DataGridView();
 // 添加列
DataGridViewTextBoxColumn col_HTBH = new DataGridViewTextBoxColumn();
col_HTBH.Name = "ZXHTBH";
col_HTBH.DataPropertyName = "ZXHTBH";
col_HTBH.HeaderText = "合同编号";
dgv.Columns.Add(col_HTBH);
......
 // 查询导出数据
DataTable dt = BLL.YardSystem.DC.QueryQKHWXX();
// 为dgv设置数据源
 dgv.DataSource = dt;
 // 导出数据
 .......

按照上面的逻辑,new的dgv,添加的列设置了列名称,列的DataPropertyName,设置了该属性就能实现DataTable中对应的列匹配上。orm

问题

作好了上面的工做,第一次运行,导出成功后,查看Excel表,没有数据,除了每一列的名称,debug,DataTable确实有数据,dgv的DataSource也有数据,然而却发现它的RowsCount为0,What。RowsCount为0。对象

解决

一通捣腾,有人说绑定了可是没有填充,也有人说循环为一行赋值,一看就以为low,最后看到一个哥们说把dgv添加到Controls里面,当时我还郁闷,我又不须要他显示,加进去干啥,然而就是这个不知道干啥起做用了。get

this.Controls.Add(dgv);

Perfect,搞定,也不知道为何,就是须要作这样一个操做。class

最后

此致,敬礼循环

相关文章
相关标签/搜索