我試圖向數據表添加新記錄。數據記錄將顯示在數據網格視圖中並寫入XML文件。每次我點擊buttonCreate創建一條記錄,但它會覆蓋現有條目而不是添加新記錄。如何在不覆蓋現有記錄的情況下向數據表添加新行?如何在不覆蓋現有記錄的情況下向數據表添加新行
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");
}
}
另外,我應該在表單事件中創建數據表?
這是一種替代解決方案。雖然當前的實現將會崩潰,但有一個例外:「DataTable已經屬於另一個DataSet」。 –
我修改了代碼來刪除這個bug:P –