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.
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
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;
}
/ / 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();
}
Vous devez ajouter explicitement la ligne à la table
table.Rows.Add(row);
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]);
Cela fonctionne pour moi:
var table = new DataTable();
table.Rows.Add();
GRV.DataSource = Class1.DataTable;
GRV.DataBind();
Class1.GRV.Rows[e.RowIndex].Delete();
GRV.DataSource = Class1.DataTable;
GRV.DataBind();