Как добавить новую строку в datagridview программно
если добавить строку DataTable
DataRow row = datatable1.NewRow();
row["column2"]="column2";
row["column6"]="column6";
datatable1.Rows.Add(row);
как о DataGridView
??
16 ответов:
вы можете сделать:
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);
или вам нужно установить там значения индивидуально используйте свойство
.Rows()
, например:dataGridView1.Rows[1].Cells[0].Value = "cell value";
допустим, у вас есть 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)
добавление новой строки в DGV без строк с добавить() поднимает SelectionChanged событие, прежде чем вы сможете вставить какие-либо данные (или привязать объект в свойстве Tag).
создать клон строки из RowTemplate безопаснее имхо:
//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);
если сетка привязана к набору данных / таблице, лучше использовать BindingSource, например
var bindingSource = new BindingSource(); bindingSource.DataSource = dataTable; grid.DataSource = bindingSource; //Add data to dataTable and then call bindingSource.ResetBindings(false)
вот как я добавляю строку, если 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);
согласно docs:"CreateCells() очищает существующие ячейки и устанавливает их шаблон в соответствии с предоставленным шаблоном DataGridView".
вот еще один способ сделать такие
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"); }
Если вам нужно манипулировать чем-либо, кроме строки значения ячейки, например, добавить тег, попробуйте следующее:
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);
yourDGV.Rows.Add(column1,column2...columnx); //add a row to a dataGridview yourDGV.Rows[rowindex].Cells[Cell/Columnindex].value = yourvalue; //edit the value
вы также можете создать новую строку, а затем добавить ее в DataGridView следующим образом:
DataGridViewRow row = new DataGridViewRow(); row.Cells[Cell/Columnindex].Value = yourvalue; yourDGV.Rows.Add(row);
пример копирования строки из 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 и с помощью события нажатия кнопки поместите в него этот код.
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";
если вы уже определили
DataSource
, вы можете получитьDataGridView
sDataSource
и бросить его как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();