Antworten:
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
RowTemplate
von der DataGridView
. Dies wird zu einem größeren Problem, wenn Sie unterschiedliche Stile in verschiedenen Zeilen in der haben DataGridView
.
So was:
var index = dgv.Rows.Add();
dgv.Rows[index].Cells["Column1"].Value = "Column1";
dgv.Rows[index].Cells["Column2"].Value = 5.6;
//....
Nehmen wir an, Sie haben eine Datagrid-Ansicht, die nicht an ein Dataset gebunden ist, und Sie möchten programmgesteuert neue Zeilen 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)
datagridview.Columns.Add("columnname")
, keine Datentabelle benötigt und mit einem Lächeln endet
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 dort Werte festlegen .Rows()
, indem Sie die Eigenschaft wie folgt verwenden :
dataGridView1.Rows[1].Cells[0].Value = "cell value";
dataGridView1.Rows[1].Cells[0].Value = "cell value"
;
Das Hinzufügen einer neuen Zeile in einem DGV ohne Zeilen mit Add () löst das SelectionChanged- Ereignis aus, bevor Sie Daten einfügen (oder ein Objekt in die Tag-Eigenschaft binden) können.
Das Erstellen einer 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);
So füge ich eine Zeile hinzu, wenn die dgrview leer ist: (myDataGridView 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 legt ihre Vorlage gemäß der mitgelieferten DataGridView-Vorlage fest".
Wenn das Raster an ein DataSet / eine 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)
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 etwas anderes als die Zeichenfolge "Zellenwert" bearbeiten müssen, 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);
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 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);
Ein Beispiel für das Kopieren einer Zeile aus dataGridView und das Hinzufügen einer neuen Zeile in derselben 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;
//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;
Wenn Sie bereits a definiert haben DataSource
, können Sie die DataGridView
´s erhalten DataSource
und als a wirken Datatable
.
Fügen Sie dann eine neue hinzu DataRow
und legen Sie die Feldwerte fest.
Fügen Sie die neue Zeile hinzu DataTable
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();
string[] splited = t.Split('>');
int index = dgv_customers.Rows.Add(new DataGridViewRow());
dgv_customers.Rows[index].Cells["cust_id"].Value=splited.WhichIsType("id;");
Aber sei dir bewusst, WhichIsType
ist die Erweiterungsmethode, die ich erstellt habe.
datagridview1.DataSource = yourDataTable