Comment ajouter une nouvelle ligne à datagridview par programmation

Si ajouter une ligne à DataTable

DataRow row = datatable1.NewRow();
row["column2"]="column2";
row["column6"]="column6";
datatable1.Rows.Add(row);

Que diriez-vous de DataGridView??

132
demandé sur Habib 2012-04-08 19:00:21

16 réponses

Vous pouvez 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);

Une Autre façon:

this.dataGridView1.Rows.Add("five", "six", "seven","eight");
this.dataGridView1.Rows.Insert(0, "one", "two", "three", "four");

À Partir de: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rows.aspx

211
répondu Habib 2016-04-20 14:11:37

Comme ceci:

var index = dgv.Rows.Add();
dgv.Rows[index].Cells["Column1"].Value = "Column1";
dgv.Rows[index].Cells["Column2"].Value = 5.6;
//....
37
répondu Jizakh 2013-11-14 04:51:31

Comme ceci:

 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 y définir des valeurs individuellement utilisez la propriété .Rows(), comme ceci:

 dataGridView1.Rows[1].Cells[0].Value = "cell value";
29
répondu Mahmoud Gamal 2012-04-08 15:18:15

Disons que vous avez un datagridview qui n'est pas lié à un ensemble de données et que vous voulez remplir par programmation de nouvelles lignes...

Voici comment vous le faites.

// 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)
29
répondu Overdrive77 2016-01-01 23:45:43

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);
19
répondu Defkon1 2013-09-26 15:13:33

Si la grille est liée à un DataSet / table, il est préférable d'utiliser une source BindingSource comme

var bindingSource = new BindingSource();
bindingSource.DataSource = dataTable;
grid.DataSource = bindingSource;

//Add data to dataTable and then call

bindingSource.ResetBindings(false)    
6
répondu Anders 2014-01-17 10:03:10

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 docs: "CreateCells() efface les cellules existantes et définit leur modèle en fonction du modèle DataGridView fourni".

5
répondu Snorvarg 2017-02-28 23:13:31

Voici une autre façon de le 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"); 
    }
3
répondu Qing Shin hua 2017-08-08 07:45:47

Si vous avez besoin de manipuler autre chose que la chaîne de valeur de la cellule, par exemple en ajoutant 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);
2
répondu silent tone 2015-01-20 17:49:37
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 à la DataGridView, comme ceci:

DataGridViewRow row = new DataGridViewRow();
row.Cells[Cell/Columnindex].Value = yourvalue;
yourDGV.Rows.Add(row);
1
répondu F.joksch 2017-08-07 07:56:48

Un exemple de ligne de copie de dataGridView et a ajouté 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;
0
répondu Sherif Hamdy 2016-01-12 04:37:25

Considérons une Application Windows et en utilisant L'événement de clic de bouton, mettez ce code dedans.

dataGridView1.Rows
                .Add(new object[] { textBox1.Text, textBox2.Text, textBox3.Text });
0
répondu DotNET 2016-01-15 18:02:17
//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; 
0
répondu Rei Salazar 2016-02-02 14:59:42
//header
dataGridView1.RowCount = 50;
dataGridView1.Rows[0].HeaderCell.Value = "Product_ID0";


//add row by cell 
 dataGridView1.Rows[1].Cells[0].Value = "cell value";
0
répondu Khan 2016-03-25 15:32:40

Si vous avez déjà défini un DataSource, Vous pouvez obtenir le DataGridViews DataSource, et de le jeter comme un Datatable.

Ajoutez ensuite un nouveau DataRow et définissez les valeurs des Champs.

Ajoutez la nouvelle ligne au 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();
0
répondu luchezco 2017-07-27 06:49:10
string[] splited = t.Split('>');
int index = dgv_customers.Rows.Add(new DataGridViewRow());
dgv_customers.Rows[index].Cells["cust_id"].Value=splited.WhichIsType("id;");

Mais attention, WhichIsType est la méthode d'extension que j'ai créée.

-1
répondu rangeeeer 2017-01-02 20:42:04