2009-06-09 9 views
9

Ho una vista datagrid che viene riempita con i dati restituiti da una query linq. Se la query non restituisce risultati, voglio visualizzare una messagebox. C'è un modo per verificare se il datagridview è vuoto?C# DataGridView Verifica se vuoto

saluti

+0

È questo ASP .Net o Windows Form? – SLaks

risposta

23

si può scoprire se è vuoto controllando il numero di righe nel DataGridView. Se myDataGridView.Rows.Count == 0, il tuo DataGridView è vuoto.

0

È possibile controllare la proprietà Rows.Count della vista datagrid.

Sebbene sia possibile anche esaminare la proprietà EmptyDataText di DataGridView. Potrebbe salvarti mostrando una messagebox.

1

In base ai risultati Linq, è possibile nascondere la vista datagrid e mostrare qualche altro controllo (come un valore Letterale o qualcosa del genere) che mostra il messaggio. Se vuoi una sorta di popup della messagebox, devi inserire alcuni JavaScript.

+0

non riesco a capire perché jscript sarebbe stato necessario, mai – Goober

1

Un sacco di risposte qui hanno un riferimento a Rows.Count. Normalmente, ciò non rappresenta un problema e, nella maggior parte dei casi, sarebbe eccessivo fare ciò che sto per suggerire.

Ma per motivi di cui al this document potrebbe non essere una buona idea di chiamare Rows.Count se il DataGridView ha spesso un sacco di dati (>~ 5000 cellule nel profiling di memoria che ho fatto per convalidare tale articolo un po 'indietro).

Evitare di utilizzare la proprietà Count del System.Windows.Forms.DataGridViewSelectedCellCollection per determinare il numero di celle selezionate. Utilizzare invece il metodo DataGridView.GetCellCount e passare il valore DataGridViewElementStates.Selected. Allo stesso modo, utilizzare i metodi DataGridViewRowCollection.GetRowCount e per determinare il numero di elementi selezionati, piuttosto che accedere alla riga selezionata e alle raccolte di colonne.

In questi casi è possibile utilizzare

myDataGridView1.Rows.GetRowCount(.) == 0 

Se non si tratta di dati mutevoli veloci o una quantità enorme di dati (o, peggio, enormi quantità di dati mutevoli veloci) poi semplicemente utilizzare righe. Conta: non fa così male.

0

Questo dovrebbe farlo:

dataGridView1.RowCount == 0 
2

Il DGV.Rows.Count metodo di controllo se DGV è vuoto non funziona se l'opzione AllowUserToAddRows è impostata su true.contano

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

// Questo dà righe = 1

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

// così finalmente ho modifieded codice come qui sotto e funziona:

è necessario disattivare AllowUserToAddRows = false quindi controllare per vuoto come questo per me

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