关于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,搞定,也不知道为什么,就是需要做这样一个操作。
最后
此致,敬礼
关于C#的DataGridView设置了DataSource后Rows无值问题的更多相关文章
- table表格在设置文字垂直居中后,在表格显示相同排列的数据(比如:testtesttesttsttesttesstestse很多的test)时此表格不能换行
table设置了垂直居中后在表格显示相同排列的数据(比如:testtesttesttsttesttesstestse很多的test)时此表格不能换行, 此时会导致table会把页面撑的很宽,导致表格后 ...
- C# winform解决解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题
public frmMain() { InitializeComponent(); //解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题 int x = Convert.ToInt32(( ...
- Flash设置全屏后,放到网页中显示不正常
stage.displayState = StageDisplayState.FULL_SCREEN;//全屏,注意当设置全屏后,放到网页中显示不正常
- 设置N秒后执行某个方法或函数
设置N秒后执行一个函数,最常用的是设置一个定时器,今天刚看到有这样一个函数,感觉还是比较简单实用的,就先记下来,免得忘记了. 5秒后执行pushSecondController这个函数 [self p ...
- 在一个没有设置宽高的容器中,为什么设置position:absolute后就可以全屏显示了?
此场景适用于移动端百分比布局,背景全屏显示. 在一个没有设置宽高的容器中设置背景,想要背景全屏显示,设置bcakground-size:100%;后还需设置position:absolut; 原因: ...
- Android 解决通过自定义设置打开热点后手机搜索不到热点的问题。
开发过程中出现了通过自定义设置打开热点后手机搜索不到热点的问题. 后来通过观看 /data/misc/wifi 目录下的 hostapd.conf 文件,发现是 interface=ap0 d ...
- 误把Linux运行级别设置为6后的解决方法【转】
本文转载自:http://www.wuji8.com/meta/841011126.html 误把Linux运行级别设置为6后的解决方法 我们知道,Linux有7个运行级别,而运行级别设置为6 ...
- dev控件ASPxComboBox设置ReadOnly="true"后
dev控件ASPxComboBox设置ReadOnly="true"后,在后台OnCallback事件中赋值前台不显示
- 元素设置disabled属性后便无法向后台传值
元素设置disabled属性后便无法向后台传值
随机推荐
- git 命令提交项目到git服务器
1.先下载git,然后安装git https://git-scm.com/downloads 2.在电脑任意盘创建一个目录 3.在创建的目录下点击右键 4.初始化git 使用git init 初始化, ...
- 【iOS录音与播放】实现利用音频队列,通过缓存进行对声音的采集与播放
都说iOS最恶心的部分是流媒体,其中恶心的恶心之处更在即时语音. 所以我们先不谈即时语音,研究一下,iOS中声音采集与播放的实现. 要在iOS设备上实现录音和播放功能,苹果提供了简单的做法,那就是利用 ...
- python实战项目
没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用到实际开发中更是不得而知了! 以上就是我们在学习过程中必须要有项目实战开发经验的原因,其实无论项 ...
- python 笔记一
1. is 和 ==区别 is 判断是否是一个ID(内存中的数据是否是同一个), == 判断内容是否一致. 2.python 常量池包括 1.短整型的-5~256 2.字符串的数字.大小写字母随意组合 ...
- [https][tls] 如何使用wireshark查看tls/https加密消息--使用keylog
姊妹篇: [ipsec][strongswan] 使用wireshark查看strongswan ipsec esp ikev1 ikev2的加密内容 [https][tls] 如何使用wiresha ...
- .net框架-队列(Queue)
队列(Queue) 队列代表一个先进先出的集合 队列元素为Object类型 .net框架提供Queue<T>泛型队列类 入队(Enqueue)和出队(Dequeue)是对列的基本操作,入队 ...
- vim编辑提示存在临时文件,删除隐藏的*.swp文件即可
在Linux下vim编辑过程中,由于某种原因异常退出正在编辑的文件,再次编辑该文件时,会出现如下提示: 使用vim编辑文件实际是先copy一份临时文件并映射到内存给你编辑,编辑的是临时文件,当执行:w ...
- 简述 OSI 七层协议?
OSI七层协议是一个用于计算机或通信系统间互联的标准体系. 物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0. 数据链路层的功能:定义了电信号的分组方式按照以太 ...
- CodeForces - 55D - Beautiful numbers(数位DP,离散化)
链接: https://vjudge.net/problem/CodeForces-55D 题意: Volodya is an odd boy and his taste is strange as ...
- nginx优化、负载均衡、rewrite
nginx优化 # 普通用户启动 (useradd nginx -s /sbin/nologin -M) user nginx; # 配置nginx worker进程个数 #worker_proces ...