C # DataGridView Vérifier si vide

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 de System.Windows.Forms.DataGridViewSelectedCellCollection pour déterminer le nombre de cellules sélectionnées. À la place, utilisez la méthode DataGridView.GetCellCount et transmettez la valeur DataGridViewElementStates.Selected . De même, utilisez les méthodes DataGridViewRowCollection.GetRowCount et DataGridViewColumnCollection.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