Réponses:
Tu peux faire:
DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells[0].Value = "XYZ";
row.Cells[1].Value = 50.2;
yourDataGridView.Rows.Add(row);
ou:
DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells["Column2"].Value = "XYZ";
row.Cells["Column6"].Value = 50.2;
yourDataGridView.Rows.Add(row);
Autrement:
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
RowTemplate
le DataGridView
. Cela devient plus un problème lorsque vous avez différents styles sur différentes lignes dans le DataGridView
.
Comme ça:
var index = dgv.Rows.Add();
dgv.Rows[index].Cells["Column1"].Value = "Column1";
dgv.Rows[index].Cells["Column2"].Value = 5.6;
//....
Disons que vous avez une vue de données qui n'est pas liée à un ensemble de données et que vous souhaitez remplir de nouvelles lignes par programmation ...
Voici comment procéder.
// 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")
, n'a pas besoin de DataTable et se termine par un sourire
Comme ça:
dataGridView1.Columns[0].Name = "column2";
dataGridView1.Columns[1].Name = "column6";
string[] row1 = new string[] { "column2 value", "column6 value" };
dataGridView1.Rows.Add(row1);
Ou vous devez définir les valeurs individuellement, utilisez la propriété .Rows()
, comme ceci:
dataGridView1.Rows[1].Cells[0].Value = "cell value";
dataGridView1.Rows[1].Cells[0].Value = "cell value"
;
L'ajout d'une nouvelle ligne dans un DGV sans lignes avec Add () déclenche l' événement SelectionChanged avant de pouvoir insérer des données (ou lier un objet dans la propriété Tag).
Créer une ligne de clone à partir de RowTemplate est plus sûr à mon humble avis:
//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);
Voici comment j'ajoute une ligne si le dgrview est vide: (myDataGridView a deux colonnes dans mon exemple)
DataGridViewRow row = new DataGridViewRow();
row.CreateCells(myDataGridView);
row.Cells[0].Value = "some value";
row.Cells[1].Value = "next columns value";
myDataGridView.Rows.Add(row);
Selon la documentation: «CreateCells () efface les cellules existantes et définit leur modèle en fonction du modèle DataGridView fourni».
voici une autre façon de faire
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");
}
Si vous avez besoin de manipuler autre chose que la chaîne de valeur de cellule, comme l'ajout d'une balise, essayez ceci:
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
vous pouvez également créer une nouvelle ligne, puis l'ajouter au DataGridView comme ceci:
DataGridViewRow row = new DataGridViewRow();
row.Cells[Cell/Columnindex].Value = yourvalue;
yourDGV.Rows.Add(row);
Si vous liez une liste
List<Student> student = new List<Student>();
dataGridView1.DataSource = student.ToList();
student .Add(new Student());
//Reset the Datasource
dataGridView1.DataSource = null;
dataGridView1.DataSource = student;
Si vous liez DataTable
DataTable table = new DataTable();
DataRow newRow = table.NewRow();
// Add the row to the rows collection.
table.Rows.Add(newRow);
Un exemple de copie de ligne de dataGridView et ajout d'une nouvelle ligne dans le même 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;
Si vous avez déjà défini a DataSource
, vous pouvez obtenir les DataGridView
´s DataSource
et les convertir en a Datatable
.
Ajoutez ensuite un nouveau DataRow
et définissez les valeurs des champs.
Ajoutez la nouvelle ligne à DataTable
et acceptez les modifications.
En C #, ce serait quelque chose comme ça.
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;");
Mais sachez que WhichIsType
c'est la méthode d'extension que j'ai créée.
datagridview1.DataSource = yourDataTable