C# DataGridView 检查是否为空

16

我有一个DataGridView,它被填充了从Linq查询返回的数据。如果查询没有结果,我想显示一个消息框。有没有一种方法可以检查DataGridView是否为空?

问候


这是ASP .Net还是Windows Forms? - SLaks
7个回答

42

您可以通过检查DataGridView中的行数来确定其是否为空。如果 myDataGridView.Rows.Count == 0,则表示您的DataGridView为空。


这并不总是像下面 Ashraf Abusada 的回答所述的那样有效。 - TK-421

3

如果选项AllowUserToAddRows设置为true,则检查DGV是否为空的方法DGV.Rows.Count将无法正常工作。

您需要禁用AllowUserToAddRows = false,然后像这样检查是否为空:

if (dataGridView1.Rows != null && dataGridView1.Rows.Count != 0)

1

//这将返回行数=1

if (dataGridView1.Rows.Count != 0 && dataGridView1.Rows != null)

//所以最后我修改了以下代码,现在它对我有效

if(dataGridView1.Rows.Count>1 && dataGridView1.Rows != null)

1
这里有很多答案都提到了Rows.Count。通常情况下,这并不是问题,而且在大多数情况下,采用我即将提出的建议可能会过度设计。

但是,由于this document中提到的原因,如果DataGridView经常有大量数据(在我之前验证该文章时,在内存分析中有>~ 5000个单元格),调用Rows.Count可能不是一个好主意。

避免使用System.Windows.Forms.DataGridViewSelectedCellCollectionCount属性来确定所选单元格的数量。相反,使用DataGridView.GetCellCount方法并传递DataGridViewElementStates.Selected值。同样,使用DataGridViewRowCollection.GetRowCountDataGridViewColumnCollection.GetColumnCount方法来确定所选元素的数量,而不是访问所选行和列集合。

在这种情况下,您可以使用。
myDataGridView1.Rows.GetRowCount(.) == 0

如果你没有处理即时变化的大量数据(或更糟糕的是,大量及时变化的数据),那么只需使用Rows.Count--它不会有太多影响。


1

根据Linq的结果,您可以隐藏datagridview并显示其他控件(如文字或其他内容),以显示消息。如果您想要某种消息框弹出,您需要在其中添加一些JavaScript代码。


看不出为什么需要使用JScript。 - Goober

0
你可以检查datagridview的Rows.Count属性。
虽然你可能还想查看DataGridView的EmptyDataText属性。这可能会避免显示消息框。

-1
这应该可以解决问题:
dataGridView1.RowCount == 0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接