2010-06-28 235 views
5

我在读取DataTable上的XML文件时遇到问题。最初,我正在写一个Datatable到一个XML文件并保存它。现在,当我想要将XML文件读回DataTable时,它不会发生。将DataTable转换为XML文件并反之亦然

下面的代码是用于写文件:

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

以及读取文件:

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

回答

3

我修正了它,问题是,tablename是在保存时分配的,而不是在读取时分配的。因此,全球分配表名,这将使其读写毫无问题。

这样的代码会,

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

可能更容易只是与更高级别的数据集工作,就像这样:

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

那不是工作要么.. – Yash 2010-06-29 13:30:16

相关问题