I have 2 DataGridViews Grid 1 is populated by importing an Excel file. I am trying to copy or clone 2 columns into DataGridView2.
My error is on this line : dataGridView2.Rows.Add(row);
It is data bound and I'm get the error ; Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.
Here's some code
private void Form1_Load(object sender, EventArgs e) { foreach (DataColumn dc in dt.Columns) cboX.Items.Add(dc.ColumnName); foreach (DataColumn dc in dt.Columns) cboY.Items.Add(dc.ColumnName); foreach (DataColumn dc in dt.Columns) cboZ.Items.Add(dc.ColumnName); } #region Data Table public static DataTable GetDataTableExcel(string strFileName, string Table) { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source = " + strFileName + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";"); conn.Open(); string strQuery = "SELECT * FROM [" + Table + "]"; System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn); System.Data.DataSet ds = new System.Data.DataSet(); adapter.Fill(ds); return ds.Tables[0]; } public static string[] GetTableExcel(string strFileName) { string[] strTables = new string[100]; Catalog oCatlog = new Catalog(); ADOX.Table oTable = new ADOX.Table(); ADODB.Connection oConn = new ADODB.Connection(); oConn.Open(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strFileName + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";"); oCatlog.ActiveConnection = oConn; if (oCatlog.Tables.Count > 0) { int item = 0; foreach (ADOX.Table tab in oCatlog.Tables) { if (tab.Type == "TABLE") { strTables[item] = tab.Name; item++; } } } return strTables; } #endregion private void button4_Click(object sender, EventArgs e) { // Adding columns in datagridview2 if (dataGridView2.ColumnCount == 0) { foreach (DataGridViewColumn dgvc in dataGridView1.Columns) { dataGridView2.Columns.Add(dgvc.Clone() as DataGridViewColumn); } } DataGridViewRow row = new DataGridViewRow(); // Adding Rows in datagridview2 for (int i = 0; i < dataGridView1.Rows.Count; i++) { DataGridView dataGridView1 = new DataGridView(); dataGridView1.ColumnCount = 5; dataGridView1.Columns[0].Name = "Dock id"; row = (DataGridViewRow)dataGridView1.Rows[i].Clone(); int intColIndex = 0; foreach (DataGridViewCell cell in dataGridView1.Rows[i].Cells) { row.Cells[intColIndex].Value = cell.Value; intColIndex++; } dataGridView2.Rows.Add(row); } try { string x = ""; string y = ""; string z = ""; if (cboX.SelectedItem != null) x = cboX.SelectedItem.ToString(); if (cboY.SelectedItem != null) y = cboY.SelectedItem.ToString(); if (cboZ.SelectedItem != null) z = cboZ.SelectedItem.ToString(); DataTable newDt = new DataTable(); if (y != "" && z != "") newDt = PivotTable.GetInversedDataTable(dt, x, y, z, txttNullValue.Text, chkSumValues.Checked); else newDt = PivotTable.GetInversedDataTable(dt, x, y); dataGridView2.DataSource = newDt; } catch (Exception err) { MessageBox.Show("Error: " + err.Message); } } } }
Booney440