2010-06-28 15 views
5

Ich habe ein Problem mit dem Lesen einer XML-Datei auf eine DataTable. Zunächst schreibe ich eine Datatable in eine XML-Datei und speichere sie. Jetzt, wenn ich die XML-Datei zurück zu DataTable lesen möchte, passiert es nicht.Convert DataTable in XML-Datei und umgekehrt

Der folgende Code ist für das Schreiben der Datei:

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    if (myDT_For_DGV.Rows.Count != 0) 
    { 
     saveFileDialog1.ShowDialog(); 
     saveFileDialog1.FileName = "checkOutFile.xml"; 
     myDT_For_DGV.TableName = "CheckOutsAndIns"; 
     myDT_For_DGV.WriteXml(saveFileDialog1.FileName, true); 
    } 
    else 
    { 
     MessageBox.Show("Please add licences to DataGridView, you havent added any licences as of now", "Alert"); 
    } 
} 

Und zum Lesen der Datei:

private void openToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    //write code to open file 
    if (openFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     //myFile = openFileDialog1.FileName; 
     System.IO.MemoryStream xmlStream = new System.IO.MemoryStream(); 

     xmlStream.Position = 0; 

     myDT_For_DGV.ReadXml(openFileDialog1.FileName); 
     //MessageBox.Show(openFileDialog1.FileName); 
    } 
} 

Antwort

3

Ich habe es behoben, das Problem ist, der Tabellenname wurde beim Speichern zugewiesen, aber nicht beim Lesen. Weisen Sie also den Tabellennamen global zu, damit er problemlos lesen und schreiben kann.

so wird der Code sein,

myDT_For_DGV.TableName = "CheckOutsAndIns"; 

if (openFileDialog1.ShowDialog() == DialogResult.OK) 
     {    
       myDT_For_DGV.ReadXml(@openFileDialog1.FileName); 
      //MessageBox.Show(openFileDialog1.FileName); 

     } 

//TO WRITE TO XML 
if (myDT_For_DGV.Rows.Count != 0) 
     { 
      saveFileDialog1.ShowDialog(); 
      saveFileDialog1.FileName = "checkOutFile.xml"; 
      myDT_For_DGV.WriteXml(saveFileDialog1.FileName, true); 
     } 
16

Es könnte einfacher sein, nur mit dem übergeordneten Datensatz zu arbeiten, wie folgt aus:

+1

Das ist auch nicht funktioniert .. – Yash