美文网首页
关于C#的DataGridView设置了DataSource后R

关于C#的DataGridView设置了DataSource后R

作者: DuBetter | 来源:发表于2019-07-08 19:22 被阅读0次

    前言

    今天写一个导出到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后R

          本文链接:https://www.haomeiwen.com/subject/xhoahctx.html