184 votes

Comment ajouter une nouvelle ligne à un datagridview de manière programmatique ?

Si ajouter une ligne à DataTable

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

Et si DataGridView ? ?

3 votes

Vous pouvez ajouter les données d'un tableau de données à un tableau de données en définissant simplement la source de données du tableau de données comme étant le tableau de données. datagridview1.DataSource = yourDataTable

295voto

Habib Points 93087

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

De : http://msdn.microsoft.com/en-us/library/system.Windows.forms.datagridview.rows.aspx

39 votes

Merci, si mon datagridview n'a pas de rangs, comment puis-je ajouter un rang ?

3 votes

@DavidYeung Dans ce cas, la réponse de MGA peut vous aider. Quelle est votre source de données ? S'agit-il d'une table de données ? Si oui, vous pouvez ajouter la ligne à la table de données, puis rafraîchir la source de données.

8 votes

Vous ne pouvez pas référencer directement une colonne par son nom comme vous l'avez fait : row.Cells["Column2"].Value = "XYZ" ; ... Vous devez d'abord consulter l'index : row.Cells[yourDataGridView.Columns["Column2"].Index].Value = "XYZ" ;

65voto

Jizakh Points 101

Comme ça :

var index = dgv.Rows.Add();
dgv.Rows[index].Cells["Column1"].Value = "Column1";
dgv.Rows[index].Cells["Column2"].Value = 5.6;
//....

0 votes

Merci, cela fonctionne très bien si vous avez un simple DataGridView à colonne unique pour de simples listes de texte modifiables.

0 votes

Cela fonctionne très bien dans le cas où vous n'avez pas de source de données assignée à la vue de la grille.

0 votes

Les rangs ne peuvent pas être ajoutés de manière programmatique à la collection de rangs du DataGridView lorsque le contrôle est lié aux données.

35voto

Mahmoud Gamal Points 46598

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 bien vous devez définir les valeurs individuellement en utilisant la méthode appropriée. .Rows() comme ceci :

 dataGridView1.Rows[1].Cells[0].Value = "cell value";

1 votes

Merci. si le datagridview a 30 colonnes, mais que je veux juste ajouter la valeur à la colonne2 et à la colonne6 et que le reste reste reste nul ou vide. comment puis-je faire cela ??

1 votes

@DavidYeung, Bien sûr que vous pouvez : dataGridView1.Rows[1].Cells[0].Value = "cell value" ;

1 votes

DataGridView.Rows.Add(null, 2, null, null, null, null, 6) ;

29voto

Defkon1 Points 21

Ajout d'une nouvelle ligne dans un DGV ne comportant aucune ligne avec Ajouter() soulève SelectionChanged avant de pouvoir insérer des données (ou lier un objet dans la propriété Tag).

Créer une rangée de clones à partir de RowTemplate est plus sûr, je pense :

//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);

3 votes

La méthode Clone() a retourné une ligne mais sans cellules. row.Cells.Count est égal à 0.

5 votes

Markand : Appelez DataGridViewRow.CreateCells pour initialiser votre collection de cellules.

0 votes

Les rangs ne peuvent pas être ajoutés de manière programmatique à la collection de rangs du DataGridView lorsque le contrôle est lié aux données.

4voto

evancroby Points 41
        dataGridView1.ColumnCount = 3;
        dataGridView1.Columns[0].Name = "Product ID";
        dataGridView1.Columns[1].Name = "Product Name";
        dataGridView1.Columns[2].Name = "Product Price";

        string[] row = new string[] { "1", "Product 1", "1000" };
        dataGridView1.Rows.Add(row);

SOURCE COMPLÈTE : C# Datagridview ajouter des lignes et des colonnes

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X