wenn Zeile zu DataTable
hinzugefügt
DataRow row = datatable1.NewRow();
row["column2"]="column2";
row["column6"]="column6";
datatable1.Rows.Add(row);
Wie wäre es mit DataGridView
?
Du kannst tun:
DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells[0].Value = "XYZ";
row.Cells[1].Value = 50.2;
yourDataGridView.Rows.Add(row);
oder:
DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells["Column2"].Value = "XYZ";
row.Cells["Column6"].Value = 50.2;
yourDataGridView.Rows.Add(row);
Ein anderer Weg:
this.dataGridView1.Rows.Add("five", "six", "seven","eight");
this.dataGridView1.Rows.Insert(0, "one", "two", "three", "four");
Von: http://msdn.Microsoft.com/en-us/library/system.windows.forms.datagridview.rows.aspx
So was:
var index = dgv.Rows.Add();
dgv.Rows[index].Cells["Column1"].Value = "Column1";
dgv.Rows[index].Cells["Column2"].Value = 5.6;
//....
So was:
dataGridView1.Columns[0].Name = "column2";
dataGridView1.Columns[1].Name = "column6";
string[] row1 = new string[] { "column2 value", "column6 value" };
dataGridView1.Rows.Add(row1);
Oder Sie müssen die Werte individuell einstellen, indem Sie die Eigenschaft .Rows()
wie folgt verwenden:
dataGridView1.Rows[1].Cells[0].Value = "cell value";
Nehmen wir an, Sie haben eine Datenansicht, die nicht an ein Dataset gebunden ist, und Sie möchten neue Zeilen programmgesteuert füllen.
So machen Sie es.
// 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)
Hinzufügen einer neuen Zeile in einer DGV ohne Zeilen mit Add () raises SelectionChanged --Ereignis, bevor Sie Daten einfügen (oder ein Objekt in die Tag-Eigenschaft binden).
Erstellen Sie eine Klonzeile aus RowTemplate ist imho sicherer:
//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);
Wenn das Raster an eine DataSet/Tabelle gebunden ist, ist es besser, eine BindingSource wie zu verwenden
var bindingSource = new BindingSource();
bindingSource.DataSource = dataTable;
grid.DataSource = bindingSource;
//Add data to dataTable and then call
bindingSource.ResetBindings(false)
So füge ich eine Zeile hinzu, wenn der dgrview leer ist: (meinDataGridView hat in meinem Beispiel zwei Spalten)
DataGridViewRow row = new DataGridViewRow();
row.CreateCells(myDataGridView);
row.Cells[0].Value = "some value";
row.Cells[1].Value = "next columns value";
myDataGridView.Rows.Add(row);
Laut docs: "CreateCells () löscht die vorhandenen Zellen und setzt ihre Vorlage entsprechend der bereitgestellten DataGridView-Vorlage".
hier ist ein anderer Weg, dies zu tun
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");
}
Wenn Sie außer der Zellenwertzeichenfolge noch etwas ändern möchten, z. B. ein Tag hinzufügen, versuchen Sie Folgendes:
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);
Wenn Sie eine Liste binden
List<Student> student = new List<Student>();
dataGridView1.DataSource = student.ToList();
student .Add(new Student());
//Reset the Datasource
dataGridView1.DataSource = null;
dataGridView1.DataSource = student;
Wenn Sie DataTable binden
DataTable table = new DataTable();
DataRow newRow = table.NewRow();
// Add the row to the rows collection.
table.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
sie können auch eine neue Zeile erstellen und diese dann wie folgt zur DataGridView hinzufügen:
DataGridViewRow row = new DataGridViewRow();
row.Cells[Cell/Columnindex].Value = yourvalue;
yourDGV.Rows.Add(row);
Wenn Sie bereits eine DataSource
definiert haben, können Sie die DataGridView
der DataSource
abrufen und als Datatable
umwandeln.
Fügen Sie dann ein neues DataRow
hinzu und legen Sie die Feldwerte fest.
Fügen Sie die neue Zeile zu DataTable
hinzu und akzeptieren Sie die Änderungen.
In C # wäre es so etwas ..
DataTable dataTable = (DataTable)dataGridView.DataSource;
DataRow drToAdd = dataTable.NewRow();
drToAdd["Field1"] = "Value1";
drToAdd["Field2"] = "Value2";
dataTable.Rows.Add(drToAdd);
dataTable.AcceptChanges();
//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";
Ein Beispiel für das Kopieren einer Zeile aus dataGridView und das Hinzufügen einer neuen Zeile in Dasselbe 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;