J'essaie d'ajouter de nouveaux enregistrements à une table de données. Les enregistrements de données s'afficheront dans une vue de grille de données et écriront dans un fichier XML. Chaque fois que je clique sur le bouton Créer un enregistrement est créé mais il écrase l'entrée existante au lieu d'ajouter un nouvel enregistrement. Comment ajouter une nouvelle ligne à la table de données sans écraser l'enregistrement existant?Comment ajouter une nouvelle ligne à la table de données sans écraser l'enregistrement existant
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void buttonCreate_Click(object sender, EventArgs e)
{
//create the DataTable
DataTable dt = new DataTable("Contact");
//dt.TableName = "Contact";
//create columns for the DataTable
DataColumn dc1 = new DataColumn("Id");
dc1.DataType = System.Type.GetType("System.Int32");
dc1.AutoIncrement = true;
dc1.AutoIncrementSeed = 1;
dc1.AutoIncrementStep = 1;
DataColumn dc2 = new DataColumn("Name");
DataColumn dc3 = new DataColumn("Age");
DataColumn dc4 = new DataColumn("Gender");
//add columns to the DataTable
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
DataRow row;
row = dt.NewRow();
row["Name"] = textBoxName.Text;
row["Age"] = textBoxAge.Text;
row["Gender"] = textBoxGender.Text;
dt.Rows.Add(row);
//insert data in the row
//dt.Rows.Add(null, textBoxName.Text, textBoxAge.Text, textBoxGender.Text);
dataGridView1.DataSource = dt;
//create DataSet
DataSet ds = new DataSet();
ds.DataSetName = "AddressBook";
ds.Tables.Add(dt);
ds.WriteXml("Contacts.xml");
}
}
De même, devrais-je créer la datatable dans l'événement de formulaire?
Ceci est une solution alternative. Bien que l'implémentation en cours se bloque avec l'exception: "DataTable appartient déjà à un autre DataSet." –
J'ai modifié le code pour supprimer ce bug: P –