I have a datagridview which gets filled with data returned from a linq query. If the query returns no results I want to display a messagebox. Is there a way of checking to see if the datagridview is empty?
Regards
I have a datagridview which gets filled with data returned from a linq query. If the query returns no results I want to display a messagebox. Is there a way of checking to see if the datagridview is empty?
Regards
You can find out if it is empty by checking the number of rows in the DataGridView. If myDataGridView.Rows.Count == 0 then your DataGridView is empty.
Based on the Linq results, you can hide the datagridview and show some other control (like a Literal or something) that shows the message. If you want some sort of messagebox popup, you'd need to throw some JavaScript in there.
A lot of answers here have a reference to Rows.Count. Normally, that does not pose a problem and it would in most cases be an overkill to do what I am about to suggest.
But for reasons mentioned in this document it may not be a good idea to call Rows.Count if the DataGridView frequently has a lot of data (>~ 5000 cells in the memory profiling I did to validate that article a while back).
Avoid using the
Countproperty of theSystem.Windows.Forms.DataGridViewSelectedCellCollectionto determine the number of selected cells. Instead, use theDataGridView.GetCellCountmethod and pass in theDataGridViewElementStates.Selectedvalue. Similarly, use theDataGridViewRowCollection.GetRowCountandDataGridViewColumnCollection.GetColumnCountmethods to determine the number of selected elements, rather than accessing the selected row and column collections.
In such cases you can use
myDataGridView1.Rows.GetRowCount(.) == 0
If you are not dealing with fast changing data or a huge amount of data (or worse, huge amount of fast changing data) then simply use Rows.Count --it does not hurt that much.