我有一个DataGridView,它被填充了从Linq查询返回的数据。如果查询没有结果,我想显示一个消息框。有没有一种方法可以检查DataGridView是否为空?
问候
我有一个DataGridView,它被填充了从Linq查询返回的数据。如果查询没有结果,我想显示一个消息框。有没有一种方法可以检查DataGridView是否为空?
问候
您可以通过检查DataGridView中的行数来确定其是否为空。如果 myDataGridView.Rows.Count == 0
,则表示您的DataGridView为空。
如果选项AllowUserToAddRows
设置为true,则检查DGV是否为空的方法DGV.Rows.Count
将无法正常工作。
您需要禁用AllowUserToAddRows = false
,然后像这样检查是否为空:
if (dataGridView1.Rows != null && dataGridView1.Rows.Count != 0)
//这将返回行数=1
if (dataGridView1.Rows.Count != 0 && dataGridView1.Rows != null)
//所以最后我修改了以下代码,现在它对我有效
if(dataGridView1.Rows.Count>1 && dataGridView1.Rows != null)
Rows.Count
。通常情况下,这并不是问题,而且在大多数情况下,采用我即将提出的建议可能会过度设计。
但是,由于this document中提到的原因,如果DataGridView
经常有大量数据(在我之前验证该文章时,在内存分析中有>~ 5000
个单元格),调用Rows.Count
可能不是一个好主意。
在这种情况下,您可以使用。避免使用
System.Windows.Forms.DataGridViewSelectedCellCollection
的Count
属性来确定所选单元格的数量。相反,使用DataGridView.GetCellCount
方法并传递DataGridViewElementStates.Selected
值。同样,使用DataGridViewRowCollection.GetRowCount
和DataGridViewColumnCollection.GetColumnCount
方法来确定所选元素的数量,而不是访问所选行和列集合。
myDataGridView1.Rows.GetRowCount(.) == 0
如果你没有处理即时变化的大量数据(或更糟糕的是,大量及时变化的数据),那么只需使用Rows.Count--它不会有太多影响。
根据Linq的结果,您可以隐藏datagridview并显示其他控件(如文字或其他内容),以显示消息。如果您想要某种消息框弹出,您需要在其中添加一些JavaScript代码。
dataGridView1.RowCount == 0