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.DataGridViewSelectedCellCollection
的Count
属性来确定所选单元格的数量。 而是,使用DataGridView.GetCellCount
方法并传入DataGridViewElementStates.Selected
值。 同样,使用DataGridViewRowCollection.GetRowCount
和DataGridViewColumnCollection.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