c# - manualmente - datagridviewrow
Cómo agregar una nueva fila a datagridview mediante programación (16)
si agrega una fila a DataTable
DataRow row = datatable1.NewRow();
row["column2"]="column2";
row["column6"]="column6";
datatable1.Rows.Add(row);
¿Qué hay de DataGridView
?
Agregar una nueva fila en un DGV sin filas con Add () genera el evento SelectionChanged antes de que pueda insertar cualquier dato (o enlazar un objeto en la propiedad Tag).
Crear una fila clon desde RowTemplate es más seguro 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);
Así es como agrego una fila si la dgrview está vacía: (myDataGridView tiene dos columnas en mi ejemplo)
DataGridViewRow row = new DataGridViewRow();
row.CreateCells(myDataGridView);
row.Cells[0].Value = "some value";
row.Cells[1].Value = "next columns value";
myDataGridView.Rows.Add(row);
De acuerdo con los documentos: "CreateCells () borra las celdas existentes y establece su plantilla de acuerdo con la plantilla DataGridView suministrada".
Considere la posibilidad de una aplicación de Windows y, mediante el uso de Button Click, coloque este código en ella.
dataGridView1.Rows
.Add(new object[] { textBox1.Text, textBox2.Text, textBox3.Text });
Me gusta esto:
dataGridView1.Columns[0].Name = "column2";
dataGridView1.Columns[1].Name = "column6";
string[] row1 = new string[] { "column2 value", "column6 value" };
dataGridView1.Rows.Add(row1);
O necesita establecer valores individualmente, use el http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rows.aspx , como este:
dataGridView1.Rows[1].Cells[0].Value = "cell value";
Me gusta esto:
var index = dgv.Rows.Add();
dgv.Rows[index].Cells["Column1"].Value = "Column1";
dgv.Rows[index].Cells["Column2"].Value = 5.6;
//....
Si la grilla está unida a un DataSet / table, es mejor usar un BindingSource como
var bindingSource = new BindingSource();
bindingSource.DataSource = dataTable;
grid.DataSource = bindingSource;
//Add data to dataTable and then call
bindingSource.ResetBindings(false)
Si necesita manipular cualquier cosa aparte de la cadena Cell Value, como agregar una etiqueta, intente esto:
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);
Si ya ha definido un DataSource
, puede obtener DataSource
de DataGridView
y convertirlo en Datatable
.
A continuación, agregue un nuevo DataRow
y establezca los valores de los campos.
Agregue la nueva fila a DataTable
y acepte los cambios.
En C # sería algo como esto ...
DataTable dataTable = (DataTable)dataGridView.DataSource;
DataRow drToAdd = dataTable.NewRow();
drToAdd["Field1"] = "Value1";
drToAdd["Field2"] = "Value2";
dataTable.Rows.Add(drToAdd);
dataTable.AcceptChanges();
Supongamos que tiene una vista de cuadrícula de datos que no está vinculada a un conjunto de datos y desea rellenar filas nuevas mediante programación ...
Así es como lo haces.
// 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)
Tu puedes hacer:
DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells[0].Value = "XYZ";
row.Cells[1].Value = 50.2;
yourDataGridView.Rows.Add(row);
o:
DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells["Column2"].Value = "XYZ";
row.Cells["Column6"].Value = 50.2;
yourDataGridView.Rows.Add(row);
De otra manera:
this.dataGridView1.Rows.Add("five", "six", "seven","eight");
this.dataGridView1.Rows.Insert(0, "one", "two", "three", "four");
De: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rows.aspx
Un ejemplo de una fila de copia de dataGridView y se agregó una nueva fila en The same 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;
aquí hay otra manera de hacer tal
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");
}
//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";
string[] splited = t.Split(''>'');
int index = dgv_customers.Rows.Add(new DataGridViewRow());
dgv_customers.Rows[index].Cells["cust_id"].Value=splited.WhichIsType("id;");
Pero ten en cuenta que WhichIsType
es el método de extensión que creé.
yourDGV.Rows.Add(column1,column2...columnx); //add a row to a dataGridview
yourDGV.Rows[rowindex].Cells[Cell/Columnindex].value = yourvalue; //edit the value
también puede crear una nueva fila y luego agregarla al DataGridView de esta manera:
DataGridViewRow row = new DataGridViewRow();
row.Cells[Cell/Columnindex].Value = yourvalue;
yourDGV.Rows.Add(row);