2010-06-28 18 views
5

Bir XML dosyasını DataTable üzerine okumakta sorun yaşıyorum. İlk olarak, bir XML dosyasına Datatable yazıyorum ve bunu kaydediyorum. Şimdi, XML dosyasını DataTable'a geri okumak istediğimde, bu gerçekleşmiyor.DataTable'ı XML dosyasına dönüştürme ve viceversa

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"); 
    } 
} 

Ve dosyayı okumak için:

şu kod dosyasını yazma içindir

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); 
    } 
} 

cevap

3

Düzeltdim, Sorun şu ki, okuma sırasında değil, kaydetme sırasında atandı. Yani, tablo adını global olarak atayın, bu da herhangi bir sorun olmadan okumasına ve yazmasına izin verecektir.

böylece kod olacak

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

Sadece bu gibi üst düzey DataSet ile çalışmak daha kolay olabilir:

DataSet dataSet = new DataSet(); 
DataTable dataTable = new DataTable(); 

dataSet.Tables.Add(dataTable); 
// Save to disk 
dataSet.WriteXml(@"C:\MyDataset.xml"); 

// Read from disk 
dataSet.ReadXml(@"C:\MyDataset.xml"); 
+1

Thats hiçbiri çalışmıyor .. – Yash

İlgili konular