У меня есть проблема с чтением XML-файла на a DataTable
. Первоначально, я пишу a Datatable
к XML-файлу и сохранению его. Теперь, когда я хочу считать XML-файл назад в DataTable
, этого не происходит.
Следующий код для записи файла:
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);
}
}
Я исправил это. Проблема в том, что имя таблицы было присвоено при сохранении, но не при чтении. Поэтому назначьте имя таблицы глобально, что позволит ей читать и писать без каких-либо проблем.
, поэтому код будет следующим:
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);
}
Возможно, будет проще просто работать с DataSet более высокого уровня, например так:
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");