'DataGridView RowCount vs Rows.Count
If I have a DataGridView uxChargeBackDataGridView
.
Are the following syntactically different but effectively the same?:
int numRows = uxChargeBackDataGridView.Rows.Count;
int numRowCount = uxChargeBackDataGridView.RowCount;
If uxChargeBackDataGridView
is empty then both are equal to 1; does it therefore logically stand that if either of these is equal to 1 I can assume the user has not input any data?
The WinFroms has a button RUN
- could I use the above test to decide if this button is enabled or not i.e only enable the button when the number of rows is >1
?
Solution 1:[1]
Both statements are the same. However, one thing to remember is that an "empty" datagridview has 1 record only if the AllowUsersToAddRow
property is set to true. Otherwise, the row count will be 0.
EDIT: I would like to add, in lieu of MMK's answer that if you do not change the RowCount, either manually or programatically, they will return the same value. See http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowcount.aspx.
Solution 2:[2]
RowCount gets or sets the number of rows displayed in the DataGridView.
Rows.Count returns the number of rows
Solution 3:[3]
If you decompile the assembly System.Windows.Forms.DataGridView
, you will see:
public int RowCount
{
get
{
return this.Rows.Count;
}
So, RowCount
returns Rows.Count
Solution 4:[4]
Following statement are return same result but RowCount limits the number of rows displayed in the DataGridView..
int numRows = uxChargeBackDataGridView.Rows.Count;
int numRowCount = uxChargeBackDataGridView.RowCount;
Check the note below on the DataGridView.RowCount Property
If AllowUserToAddRows is true, you cannot set RowCount to 0. In this case, call the DataGridViewRowCollection.Clear method to remove all rows except the row for new records. Calling Clear has the same result as setting RowCount to 1 in this case, but is much faster.
If RowCount
is set to a value less than the current value, rows will be removed from the end of the Rows collection. If RowCount is set to a value greater than the current value, rows will be added to the end of the Rows collection. The additional rows are based on the row specified in the RowTemplate property.
If it is true then a default empty row is considered. It Implements IBindingList interface. Ref: DataGridView - what does AllowUserToAddRows do?
If the DataGridView is bound to data, the user is allowed to add rows if both this property and the data source's IBindingList.AllowNew property are set to true.
Solution 5:[5]
If AllowUserToAddRows is true at least one row will always be present in the grid for the new record. To exclude this row check for property IsNewRow on the row object.
Solution 6:[6]
IsNewRow probably can solve mystery. It can give the meaning of 1. If IsNewRow is true created but there is nothing in it and not registered. If IsNewRow false you have got 1 row filled full or partially. I hope this is right for you.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | MMK |
Solution 3 | Computer User |
Solution 4 | Community |
Solution 5 | I-A-N |
Solution 6 | nonexist |