web-dev-qa-db-fra.com

Comment ajouter une nouvelle ligne à datagridview par programme

si ajouter une ligne à DataTable

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

Que diriez-vous de DataGridView ??

135
LK Yeung

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

220
Habib

Comme ça:

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

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

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

Disons que vous avez un datagridview qui n'est pas lié à un ensemble de données et que vous voulez remplir par programme 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
Overdrive77

Ajouter une nouvelle ligne dans un fichier DGV sans lignes avec l'événement Add () soulève SelectionChanged avant que vous puissiez insérer des données (ou lier un objet dans la propriété Tag).

Créez une ligne de clonage à partir de RowTemplate is safer 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);
19
Defkon1

Si la grille est liée à un DataSet/table, il vaut mieux utiliser un BindingSource comme

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

//Add data to dataTable and then call

bindingSource.ResetBindings(false)    
6
Anders

Voici comment j'ajoute une ligne si 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 conformément au modèle DataGridView fourni".

5
Snorvarg

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"); 
    }
3
Qing Shin hua

Si vous devez manipuler autre chose que la chaîne Valeur de la 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);
3
silent tone

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);
1
Mohammad Salmanian
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 suit:

DataGridViewRow row = new DataGridViewRow();
row.Cells[Cell/Columnindex].Value = yourvalue;
yourDGV.Rows.Add(row);
1
F.joksch

Si vous avez déjà défini un DataSource, vous pouvez obtenir le DataGridView´s DataSource et le lancer comme Datatable.

Ajoutez ensuite une nouvelle DataRow et définissez les valeurs des champs.

Ajoutez la nouvelle ligne à la 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
luchezco
//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
Rei Salazar
//header
dataGridView1.RowCount = 50;
dataGridView1.Rows[0].HeaderCell.Value = "Product_ID0";


//add row by cell 
 dataGridView1.Rows[1].Cells[0].Value = "cell value";
0
Khan

Un exemple de copie d'une ligne de dataGridView et 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;
0
Sherif Hamdy