關於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,搞定,也不知道為什么,就是需要做這樣一個操作。

最后

此致,敬禮


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM