C#DataGridView检查是否为空

我有一个datagridview,它填充了linq查询返回的数据。 如果查询没有返回结果,我想显示一个消息框。 有没有办法检查datagridview是否为空?

问候

您可以通过检查DataGridView中的行数来确定它是否为空。 如果myDataGridView.Rows.Count == 0那么您的DataGridView为空。

如果选项AllowUserToAddRows设置为true,则检查DGV是否为空的DGV.Rows.Count方法不起作用。

你必须禁用AllowUserToAddRows = false然后像这样检查空:

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

根据Linq结果,您可以隐藏datagridview并显示一些显示消息的其他控件(如Literal或其他内容)。 如果你想要某种消息框弹出窗口,你需要在那里抛出一些JavaScript。

这里有很多答案都提到了Rows.Count 。 通常情况下,这不会造成问题,并且在大多数情况下,做我即将建议的事情会有些过分。

但是由于本文档中提到的原因,如果DataGridView经常有大量数据(在内存分析中有>~ 5000单元用于validation该文章的时间),则调用Rows.Count可能不是一个好主意。

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

在这种情况下,你可以使用

 myDataGridView1.Rows.GetRowCount(.) == 0 

如果您不处理快速变化的数据或大量数据(或更糟糕的是,大量快速变化的数据),那么只需使用Rows.Count – 它不会伤害那么多。

//这给行count = 1

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

//所以最后我修改了如下代码,它对我有用

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

您可以检查datagridview的Rows.Count属性。

虽然您可能还想查看DataGridView的EmptyDataText属性。 它可能会保存您显示消息框。

这应该这样做:

 dataGridView1.RowCount == 0