J’ai un datagridview qui est rempli avec les données renvoyées par une requête linq. Si la requête ne donne aucun résultat, je souhaite afficher une boîte de message. Existe-t-il un moyen de vérifier si la datagridview est vide?
Cordialement
Vous pouvez savoir s’il est vide en vérifiant le nombre de lignes dans le DataGridView. Si myDataGridView.Rows.Count == 0
votre DataGridView est vide.
La méthode DGV.Rows.Count
pour vérifier si DGV est vide ne fonctionne pas si l’option AllowUserToAddRows
est définie sur true.
Vous devez désactiver AllowUserToAddRows = false
puis vérifiez si vide est comme ceci:
if (dataGridView1.Rows.Count != 0 && dataGridView1.Rows != null)
En fonction des résultats de Linq, vous pouvez masquer la fenêtre datagridview et afficher un autre contrôle (un littéral, par exemple) affichant le message. Si vous voulez une sorte de message contextuel, vous devez y insérer du code JavaScript.
Beaucoup de réponses ici font référence à Rows.Count
. Normalement, cela ne pose pas de problème et il serait dans la plupart des cas exagéré de faire ce que je vais suggérer.
Mais pour les raisons mentionnées dans ce document, il peut ne pas être judicieux d’appeler Rows.Count
si DataGridView
contient fréquemment beaucoup de données ( >~ 5000
cellules dans le profil de mémoire que j’ai fait pour valider cet article il ya quelque temps).
Évitez d’utiliser la propriété
Count
deSystem.Windows.Forms.DataGridViewSelectedCellCollection
pour déterminer le nombre de cellules sélectionnées. À la place, utilisez la méthodeDataGridView.GetCellCount
et transmettez la valeurDataGridViewElementStates.Selected
. De même, utilisez les méthodesDataGridViewRowCollection.GetRowCount
etDataGridViewColumnCollection.GetColumnCount
pour déterminer le nombre d’éléments sélectionnés, plutôt que d’accéder aux collections de lignes et de colonnes sélectionnées.
Dans de tels cas, vous pouvez utiliser
myDataGridView1.Rows.GetRowCount(.) == 0
Si vous ne traitez pas avec des données qui changent rapidement ou une énorme quantité de données (ou pire, une quantité énorme de données qui changent rapidement), utilisez simplement Rows.Count – cela ne fait pas très mal.
// cela donne le nombre de lignes = 1
if (dataGridView1.Rows.Count != 0 && dataGridView1.Rows != null)
// donc finalement j’ai modifié le code comme ci-dessous et cela fonctionne pour moi
if(dataGridView1.Rows.Count>1 && dataGridView1.Rows != null)
Vous pouvez vérifier la propriété Rows.Count de la datagridview.
Bien que vous souhaitiez peut-être également examiner la propriété EmptyDataText de DataGridView. Cela pourrait vous faire économiser une boîte de message.
Cela devrait le faire:
dataGridView1.RowCount == 0