zoukankan      html  css  js  c++  java
  • 关于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,搞定,也不知道为什么,就是需要做这样一个操作。

    最后

    此致,敬礼

  • 相关阅读:
    深入浅出列生成算法
    小游戏云开发入门
    代码生成器插件与Creator预制体文件解析
    使用四叉树优化碰撞检测
    游戏开发中的人工智能
    一个可屏蔽长短链接的网络模块
    游戏开发中的新手引导与事件管理系统
    Creator填色游戏的一种实现方案
    CocosCreator之AssetBundle使用方案分享
    跨引擎游戏框架说明文档
  • 原文地址:https://www.cnblogs.com/numen-fan/p/11153208.html
Copyright © 2011-2022 走看看