如何以编程方式将新行添加到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
,那么您可以获取DataGridView
的DataSource
并将其转换为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的扩展方法。