我有一个导入Excel File
的模块,并在DataGridView Object
中显示其内容。与此同时,我有一个模块可以将DataGridView Object
DataSource as a DataTable
的内容导出到Excel File
。
如何通过不执行if(dataGridView1.Rows.Count == 0){}
条件来检查DataGridView是否具有DataSource。
这是因为我注意到即使用户导入或打开空Excel File
,DataGridView Object
仍会显示一个Column
。
这就是我想尝试检查DataGridView Object
是否有DataSource
我正在寻找类似
的代码if(dataGridView1.DataSource == true)
{
// do something is DataSource if found or is bound
}
else
{
//do something is DataSource is not found or is not bound
}
编辑 - 目前我正在使用此代码过滤空数据源:
假设:
var dtList = new Dictionary<string, DataTable>() {
{ "dataGridView1", (DataTable) (dataGridView1.DataSource) },
{ "dataGridView2", (DataTable) (dataGridView2.DataSource) },
{ "dataGridView3", (DataTable) (dataGridView3.DataSource) },
{ "dataGridView4", (DataTable) (dataGridView4.DataSource) }
};
dataGridView1
和dataGridView3
没有DataSource
或DataGridView Object
为空。我运行下面的代码来过滤并删除那些空的DataTable
:
//Filter and Remove empty DataTable(s)
var remList = new List<string>();
foreach(var dt in dtList) {
try {
var dump = dt.Value.GetType().ToString();
} catch(Exception ex) {
remList.Add(dt.Key);
}
}
foreach(var rem in remList) {
dtList.Remove(rem);
}
使用此代码,我可以从DataTable
过滤掉所有其他空dtList Object
。但是,当然,我正在寻找比这更好的配方。所以是的,希望我能得到一些提示和代码。感谢
答案 0 :(得分:1)
我建议编写代码来验证DataGridView
中的空行,以避免导出空行。
您可以查找将DataSource
验证为 null ,但我非常怀疑这与验证行计数有何不同。
由于您提到在导入Excel时看到添加了空行,因此可以通过执行此验证来避免将空数据网格视图导出为Excel。
DataTable source = dataGridView1.DataSource as DataTable;
var emptyrows = source.AsEnumerable()
.All(r=> r.ItemArray.All(x=> x == DBNull.Value));
if(!emptyrows)
{
//export
}
答案 1 :(得分:0)
如果DataSource还没有被指定,它将是null
所以你可以像下面那样检查它们:
if(dataGridView1.DataSource == null)
{
// do something there is no assigned Datasource
}
else
{
//do something with the DataSource
}