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

前言

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

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

实现及问题

直接看解决即可

实现

因为项目中有公用的导出方法,只需要传递一个DataGridView参数即可,所以肯定是将查出来的DataTable转成一个DataGridView,以前都是直接在WinForm中拖,现在肯定是直接new一个。

// 新建一个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中对应的列匹配上。

问题

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

解决

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

this.Controls.Add(dgv);

Perfect,搞定,也不知道为什么,就是需要做这样一个操作。

最后

此致,敬礼

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • C#操作excel(多种方法比较) 我们在做excel资料的时候,通常有以下方法。 一.导入导出excel常用方法...
    北风知我意阅读 1,541评论 0 2
  • 【思维导图与古诗词篇】 3、子夜吴歌·秋歌 唐:李白 长安一片月,万户捣衣声。 秋风吹不尽,总是玉关情。 何日平...
    孩子们的松哥哥阅读 2,454评论 0 1
  • 题外话:前两天下午接她放学,想起好久没带她去儿童公园玩了,就带她去看了看。想起当初第一次带她去儿童公园的时...
    抒情的精灵阅读 1,169评论 0 3
  • 昨晚那最后一班的地铁 还是跟往日一样 疾驰的如同一阵风, 不过这时候时间却慢了下来 跳过了所有报备的过程 车厢空荡...
    阿票阅读 438评论 0 3
  • 昨晚做了一个梦 某市出现连环杀人案,死者都是女性,均死在电梯内。 我们案组便衣装扮负责调查此事,根据一些线索来到了...
    阿珂a阅读 193评论 0 0

友情链接更多精彩内容