如何以编程方式将新行添加到datagridview

如果将行添加到DataTable

 DataRow row = datatable1.NewRow(); row["column2"]="column2"; row["column6"]="column6"; datatable1.Rows.Add(row); 

DataGridView怎么样?

你可以做:

 DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone(); row.Cells[0].Value = "XYZ"; row.Cells[1].Value = 50.2; yourDataGridView.Rows.Add(row); 

要么:

 DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone(); row.Cells["Column2"].Value = "XYZ"; row.Cells["Column6"].Value = 50.2; yourDataGridView.Rows.Add(row); 

其他方式:

 this.dataGridView1.Rows.Add("five", "six", "seven","eight"); this.dataGridView1.Rows.Insert(0, "one", "two", "three", "four"); 

来自: http : //msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rows.aspx

喜欢这个:

 var index = dgv.Rows.Add(); dgv.Rows[index].Cells["Column1"].Value = "Column1"; dgv.Rows[index].Cells["Column2"].Value = 5.6; //.... 

喜欢这个:

  dataGridView1.Columns[0].Name = "column2"; dataGridView1.Columns[1].Name = "column6"; string[] row1 = new string[] { "column2 value", "column6 value" }; dataGridView1.Rows.Add(row1); 

或者您需要单独使用propery .Rows()来设置值,如下所示:

  dataGridView1.Rows[1].Cells[0].Value = "cell value"; 

在DGV中添加没有行的Add行的新行将引发SelectionChanged事件,然后才能插入任何数据(或将对象绑定到Tag属性中)。

RowTemplate创build一个克隆行是更安全的imho:

 //assuming that you created columns (via code or designer) in myDGV DataGridViewRow row = (DataGridViewRow) myDGV.RowTemplate.Clone(); row.CreateCells(myDGV, "cell1", "cell2", "cell3"); myDGV.Rows.Add(row); 

比方说,你有一个datagridview不绑定到数据集,你想以编程方式填充新的行…

这是你如何做到的。

 // Create a new row first as it will include the columns you've created at design-time. int rowId = dataGridView1.Rows.Add(); // Grab the new row! DataGridViewRow row = dataGridView1.Rows[rowId]; // Add the data row.Cells["Column1"].Value = "Value1"; row.Cells["Column2"].Value = "Value2"; // And that's it! Quick and painless... :o) 

如果网格绑定在DataSet /表上,最好使用BindingSource

 var bindingSource = new BindingSource(); bindingSource.DataSource = dataTable; grid.DataSource = bindingSource; //Add data to dataTable and then call bindingSource.ResetBindings(false) 

如果您需要操作除Cell Valuestring以外的任何内容(如添加Tag),请尝试以下操作:

 DataGridViewRow newRow = (DataGridViewRow)mappingDataGridView.RowTemplate.Clone(); newRow.CreateCells(mappingDataGridView); newRow.Cells[0].Value = mapping.Key; newRow.Cells[1].Value = ((BusinessObject)mapping.Value).Name; newRow.Cells[1].Tag = mapping.Value; mappingDataGridView.Rows.Add(newRow); 

从dataGridView复制行的示例,并在相同的dataGridView中添加新行:

 DataTable Dt = new DataTable(); Dt.Columns.Add("Column1"); Dt.Columns.Add("Column2"); DataRow dr = Dt.NewRow(); DataGridViewRow dgvR = (DataGridViewRow)dataGridView1.CurrentRow; dr[0] = dgvR.Cells[0].Value; dr[1] = dgvR.Cells[1].Value; Dt.Rows.Add(dR); dataGridView1.DataSource = Dt; 

考虑一个Windows应用程序,并使用Button Click Event把这个代码放在里面。

 dataGridView1.Rows .Add(new object[] { textBox1.Text, textBox2.Text, textBox3.Text }); 
 //Add a list of BBDD var item = myEntities.getList().ToList(); //Insert a new object of type in a position of the list item.Insert(0,(new Model.getList_Result { id = 0, name = "Coca Cola" })); //List assigned to DataGridView dgList.DataSource = item; 
 //header dataGridView1.RowCount = 50; dataGridView1.Rows[0].HeaderCell.Value = "Product_ID0"; //add row by cell dataGridView1.Rows[1].Cells[0].Value = "cell value"; 

这是我如何添加一行,如果dgrview为空:( myDataGridView在我的例子中有两列)

 DataGridViewRow row = new DataGridViewRow(); row.CreateCells(myDataGridView); row.Cells[0].Value = "some value"; row.Cells[1].Value = "next columns value"; myDataGridView.Rows.Add(row); 

根据文档:“CreateCells()清除现有的单元格,并根据提供的DataGridView模板设置他们的模板”。

如果您已经定义了一个DataSource ,那么您可以获取DataGridViewDataSource并将其转换为Datatable

然后添加一个新的DataRow并设置字段值。

将新行添加到DataTable并接受更改。

在C#中,这将是这样的..

 DataTable dataTable = (DataTable)dataGridView.DataSource; DataRow drToAdd = dataTable.NewRow(); drToAdd["Field1"] = "Value1"; drToAdd["Field2"] = "Value2"; dataTable.Rows.Add(drToAdd); dataTable.AcceptChanges(); 
 yourDGV.Rows.Add(column1,column2...columnx); //add a row to a dataGridview yourDGV.Rows[rowindex].Cells[Cell/Columnindex].value = yourvalue; //edit the value 

您也可以创build一个新行,然后将其添加到DataGridView中,如下所示:

 DataGridViewRow row = new DataGridViewRow(); row.Cells[Cell/Columnindex].Value = yourvalue; yourDGV.Rows.Add(row); 

这是另一种方式来做到这一点

  private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { dataGridView1.ColumnCount = 3; dataGridView1.Columns[0].Name = "Name"; dataGridView1.Columns[1].Name = "Age"; dataGridView1.Columns[2].Name = "City"; dataGridView1.Rows.Add("kathir", "25", "salem"); dataGridView1.Rows.Add("vino", "24", "attur"); dataGridView1.Rows.Add("maruthi", "26", "dharmapuri"); dataGridView1.Rows.Add("arun", "27", "chennai"); } 
 string[] splited = t.Split('>'); int index = dgv_customers.Rows.Add(new DataGridViewRow()); dgv_customers.Rows[index].Cells["cust_id"].Value=splited.WhichIsType("id;"); 

但请注意, WhichIsType是我创build的扩展方法。