Comment ajouter un nouveau DataRow dans DataTable?

J'ai un DataGridView " lié " à un DataTable (DataTable liées à la base de données). Je dois ajouter un DataRow au DataTable. J'essaie d'utiliser le code suivant:

dataGridViewPersons.BindingContext[table].EndCurrentEdit();
DataRow row = table.NewRow();

for (int i = 0; i < 28; i++)
{
    row[i] = i.ToString();
}

, Mais ça ne fonctionne pas, DataGridView n'a jamais été ajouté une nouvelle ligne. S'il vous plait, dites-moi, Comment puis-je réparer mon code?

Merci d'avance.

33
demandé sur jszigeti 2012-09-28 18:32:17

8 réponses

Vous pouvez essayer avec ce code basé sur Rows.Add method

DataTable table = new DataTable();
DataRow row = table.NewRow();
table.Rows.Add(row);

Lien : https://msdn.microsoft.com/en-us/library/9yfsd47w.aspx

49
répondu Aghilas Yakoub 2017-01-27 09:55:12

J'ai trouvé dotnetperls exemples sur DataRow très utile. Extrait de Code pour new DataTable à partir de là:

static DataTable GetTable()
{
    // Here we create a DataTable with four columns.
    DataTable table = new DataTable();
    table.Columns.Add("Weight", typeof(int));
    table.Columns.Add("Name", typeof(string));
    table.Columns.Add("Breed", typeof(string));
    table.Columns.Add("Date", typeof(DateTime));

    // Here we add five DataRows.
    table.Rows.Add(57, "Koko", "Shar Pei", DateTime.Now);
    table.Rows.Add(130, "Fido", "Bullmastiff", DateTime.Now);
    table.Rows.Add(92, "Alex", "Anatolian Shepherd Dog", DateTime.Now);
    table.Rows.Add(25, "Charles", "Cavalier King Charles Spaniel", DateTime.Now);
    table.Rows.Add(7, "Candy", "Yorkshire Terrier", DateTime.Now);

    return table;
}
11
répondu mimo 2016-11-18 15:50:46

/ / BH créer une nouvelle ligne avec la structure de la table:

DataTable table = new DataTable();
DataRow row = table.NewRow();
table.Rows.Add(row);

/ / Donner des valeurs aux colonnes de la ligne(cette ligne est supposée avoir 28 colonnes):

for (int i = 0; i < 28; i++)
{
    row[i] = i.ToString();
}
8
répondu Mehran Sarrafi 2013-11-14 05:55:05

Vous devez ajouter explicitement la ligne à la table

table.Rows.Add(row);
3
répondu rene 2012-09-28 14:35:34

Si vous avez besoin de copier à partir d'une autre table, vous devez d'abord copier la structure:

DataTable copyDt = existentDt.Clone();
copyDt.ImportRow(existentDt.Rows[0]);
3
répondu Aleksey Kontsevich 2013-03-14 21:54:36

Cela fonctionne pour moi:

var table = new DataTable();
table.Rows.Add();
1
répondu x-silencer 2012-09-28 14:55:24

Essayez table.Rows.add(row); après votre instruction for.

0
répondu Riccardo 2012-09-28 14:36:07
    GRV.DataSource = Class1.DataTable;
            GRV.DataBind();

Class1.GRV.Rows[e.RowIndex].Delete();
        GRV.DataSource = Class1.DataTable;
        GRV.DataBind();
0
répondu LollyPop 2017-06-20 19:22:07