, если добавить строку в DataTable
Как добавить новую строку в DataGridView программным
DataRow row = datatable1.NewRow();
row["column2"]="column2";
row["column6"]="column6";
datatable1.Rows.Add(row);
Как насчет DataGridView
??
, если добавить строку в DataTable
Как добавить новую строку в DataGridView программным
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
спасибо, если у моего datagridview нет строк, как я могу добавить строку? –
@DavidYeung хорошо в этом случае ответ от MGA может помочь вам, каков ваш источник данных? это данные? если это так, вы можете добавить строку в datatable, а затем обновить источник данных. – Habib
Вы не можете напрямую ссылаться на столбец по имени, как вы это делали: row.Cells ["Column2"]. Value = "XYZ"; ... Сначала нужно искать индекс: row.Cells [yourDataGridView.Columns ["Column2"]. Index] .Value = "XYZ"; – Tizz
Как это:
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 есть 30 столбцов, но я просто хочу добавить значение в столбцы2 и столбцы6, а остальные остаются пустыми или пустыми. как я могу это сделать?? –
@DavidYeung, вы можете: 'dataGridView1.Rows [1] .Cells [0] .Value =" cell value "'; –
dataGridView.Rows.Add (null, 2, null, null, null, 6); – MrFox
Добавление новой строки в DGV без каких-либо строк с Add() поднимает SelectionChanged событие, прежде чем вы можете вставить любые данные (или связать объект в свойстве Tag).
Создать клон строку из RowTemplate безопаснее 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);
Метод clone() возвратил строку, но без ячеек. row.Cells.Count равен 0. –
Markand: вызов DataGridViewRow.CreateCells для инициализации коллекции ваших ячеек. –
Как это:
var index = dgv.Rows.Add();
dgv.Rows[index].Cells["Column1"].Value = "Column1";
dgv.Rows[index].Cells["Column2"].Value = 5.6;
//....
Спасибо, это работает очень хорошо, если у вас есть простой один столбец DataGridView для простых редактируемых списков текста. –
Если сетка связана против DataSet/таблицы, его лучше использовать BindingSource как
var bindingSource = new BindingSource();
bindingSource.DataSource = dataTable;
grid.DataSource = bindingSource;
//Add data to dataTable and then call
bindingSource.ResetBindings(false)
Если вам нужно манипулировать съел что-нибудь в стороне от строки Cell Value, такие как добавление тегов, попробуйте следующее:
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;
позволяет сказать у вас есть 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)
+1: Это единственное решение, которое на самом деле использует имена столбцов, как определено в 'datagridview.Columns.Add (" columnname ")', не нуждается в DataTable и заканчивается улыбкой – Roland
Рассмотрите приложение Windows и используя кнопку 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;
Можете ли вы объяснить, как это будет решить проблему? – Phani
Если you've уже определен 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();
//header
dataGridView1.RowCount = 50;
dataGridView1.Rows[0].HeaderCell.Value = "Product_ID0";
//add row by cell
dataGridView1.Rows[1].Cells[0].Value = "cell value";
string[] splited = t.Split('>');
int index = dgv_customers.Rows.Add(new DataGridViewRow());
dgv_customers.Rows[index].Cells["cust_id"].Value=splited.WhichIsType("id;");
Но знайте, WhichIsType
метод расширения я создал.
Когда вы отвечаете на вопрос с некоторым кодом, и для этого кода требуется собственный метод расширения, который вы создали, и вы не указали код для настраиваемого метода, это не очень полезный ответ. – Bryan
спасибо за подсказку. я из этого боюсь.но этот метод не является важным методом – rangeeeer
Это, как я добавить строку, если 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 ".
Спасибо, что это было очень полезно для меня, мне не хватало «row.CreateCells (myDataGridView)»; – Nuno
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);
здесь есть еще один способ сделать такие
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");
}
Вы можете добавить данные datatable to datagridview, просто установив источник данных gridview равным datatable 'datagridview1.DataSource = yourDataTable' –