First of all, I looked up this related question in here but the solution dataGridView1.Rows.Add()
doesn't work in my case.
In my Datagridview, I have 3 TextBoxes for data input and 2 ComboBoxes for the user to choose the values (which are bound into the database). One of my TextBoxes is set to read only so that the users can only populate it outside the datagrid (with a normal TexBox and a Button).
When the users fill a DataGridView with data, there is always an empty row at the bottom; so I disable this and I used this code to prevent the users from adding a new row inside the datagrid...
dataGridView1.AllowUserToAddRows = false
I only want to add a new row when the users click the button I mentioned above (which throws an error).
The error message I got was:
"Rows cannot be programmatically added to the datagridview's row collection when the control is data-bound"
the one with a red arrow is a ComboBox, and the one with green arrow is a read only TextBox
It appears as though you are using the DataSource
property of the DataGridView
. When this property is used to bind to data you cannot explicitly add rows directly to the DataGridView
. You must instead add rows directy to your data source.
For example if your data source is a DataTable
, using the DataTable
that is assigned to the DataSource
property (untested):
private void AddARow(DataTable table)
{
// Use the NewRow method to create a DataRow with
// the table's schema.
DataRow newRow = table.NewRow();
// Add the row to the rows collection.
table.Rows.Add(newRow);
}