Linqクエリから返されたデータでいっぱいになるdatagridviewがあります。クエリが結果を返さない場合は、メッセージボックスを表示します。 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
への参照があります。通常、それは問題を引き起こさず、ほとんどの場合、私が提案しようとしていることを行うのはやり過ぎでしょう。
ただし、 このドキュメント で説明されている理由により、DataGridView
に大量のデータ(Rows.Count
セルが含まれる)が頻繁にある場合は、>~ 5000
を呼び出すことはお勧めできませんしばらく前にその記事を検証するために行ったメモリプロファイリング)。
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
DatagridviewのRows.Countプロパティを確認できます。
ただし、DataGridViewのEmptyDataTextプロパティを調べることもできます。メッセージボックスを表示する手間が省ける場合があります。