29. januar 2011 - 13:12Der er
3 kommentarer og 1 løsning
Brug af XML i C# istedet for en database (tabel)
Hej,
Jeg er ved at lave et lille applikation i C# hvor jeg har brug for at gemme nogle data i en XML fil. I programmet viser jeg data fra XML'en i en DataGridView, men jeg vil gerne kunne lave ændringer og gemme det i samme XML fil. Jeg kan ikke få det til at gemme ændringer eller tilføjelse. Her er lidt kode: public Form1() { InitializeComponent(); dataSet1.ReadXml("C:\\tmp\\test.xml"); this.bindingSource1.DataSource = dataSet1.Tables["Row"]; dataGridView1.DataSource = bindingSource1; } Jeg bruger en bindingNavigator's SAVE knap til at kunne gemme:
@diyar: Hvad med sletning, virker det? For hvis ikke, så skyldes det evt. at når du kører i debug mode, så kopierer den original filen over, og så er det kopien du arbejder på. Dvs. ændringer gemmes kun pr. debugging session, og de forsvinder derfor igen så snart du lukker programmet. Anyways, bare et skud.
Nej, det var ikke tilfældet, jeg har fået løst det på en anden måde. Jeg fandt selv ud af det. Jeg bruger Form_load event istedet for, så gider den godt at gemme.
public partial class Form1 : Form { //DataSet mydataSet = new DataSet(); DataTable dtbl; public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { DataGridView dataGridView1 = new DataGridView(); DataTable dt = new DataTable("Row"); dt.ReadXmlSchema("C:\\tmp\\test.xml"); dt.ReadXml("C:\\tmp\\test.xml"); //dt.Columns.Add("id", typeof(int)); //dt.Columns.Add("name", typeof(string)); for (int i = 0; i < dataGridView1.Rows.Count; i++) dt.Rows.Add(dataGridView1[0, i].Value.ToString(), dataGridView1[1, i].Value.ToString()); dt.AcceptChanges(); this.dataGridView1.DataSource = dt.DefaultView; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.