whytheq
whytheq

Reputation: 35605

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?

My WinForms application has a button named 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 ?

Upvotes: 14

Views: 66196

Answers (6)

nonexist
nonexist

Reputation: 11

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.

Upvotes: 1

Computer User
Computer User

Reputation: 2879

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

Upvotes: 7

I-A-N
I-A-N

Reputation: 169

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.

Upvotes: 1

Niranjan Singh
Niranjan Singh

Reputation: 18260

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.

Upvotes: 1

Holger Brandt
Holger Brandt

Reputation: 4354

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.

Upvotes: 12

MMK
MMK

Reputation: 3721

RowCount gets or sets the number of rows displayed in the DataGridView.

Rows.Count returns the number of rows

Upvotes: 18

Related Questions