2017-05-31 68 views
0

我想寫一個WinForms應用程序,它從數據網格獲取數據並將其附加到xml文件,但是我的代碼覆蓋了現有的數據。如何避免覆蓋我的xml數據庫?

我從文本框讀取值將數據添加到數據網格

private void add_row_BTN_Click(object sender, EventArgs e) 
    { 
     int add = dataGridView1.Rows.Add(); 
     dataGridView1.Rows[add].Cells[0].Value = textBox1.Text; 
     dataGridView1.Rows[add].Cells[1].Value = textBox2.Text; 
     dataGridView1.Rows[add].Cells[2].Value = textBox4.Text; 
     dataGridView1.Rows[add].Cells[3].Value = textBox5.Text; 
     dataGridView1.Rows[add].Cells[4].Value = textBox6.Text; 
     dataGridView1.Rows[add].Cells[5].Value = textBox3.Text; 
    } 

這裏是我從保存的DataGridView數據

private void save_BTN_Click(object sender, EventArgs e) 
    { 
     DataSet ds = new DataSet(); 
     DataTable dt = new DataTable(); 
     dt.TableName = "Employees"; 
     dt.Columns.Add("Name"); 
     dt.Columns.Add("E-Mail"); 
     dt.Columns.Add("Age"); 
     dt.Columns.Add("WorkHours"); 
     dt.Columns.Add("Gender"); 
     dt.Columns.Add("JobTitle"); 
     ds.Tables.Add (dt); 
     DataRow dr = ds.Tables["Employees"].NewRow(); 
     dr["Name"] = textBox1.Text; 
     dr["E-Mail"] = textBox2.Text; 
     dr["Age"] = textBox4.Text; 
     dr["WorkHours"] = textBox5.Text; 
     dr["Gender"] = textBox6.Text; 
     dr["JobTitle"] = textBox3.Text; 
     ds.Tables["Employees"].Rows.Add(dr); 

     ds.WriteXml("Data.xml"); 

    } 
+0

你想要做什麼?您之前的數據會發生什麼,以及您的新數據會發生什麼?顯然,他們不能共享相同的文件名。 –

+0

我希望程序能夠從文本框中獲取數據並將其保存到XML文件中,而不會覆蓋舊數據 –

回答

0

可以使用重載方法如下給輸入

System.IO.FileStream stream = new System.IO.FileStream(@"Data.xml", System.IO.FileMode.Append); 

      // Write to the file with the WriteXml method. 
      ds.WriteXml(stream); 
+0

我試過了,它可行,但是, 我必須關閉並打開程序才能輸入新數據 –

+0

call stream.close ()在使用後關閉流。 –