我需要帮助弄清楚 doc.save 的工作原理。
后台:有一个c#方法从xml文档中获取属性。然后我将这些作为Windows格式的DataGridView的数据集发送。我试图这样做,以便当用户编辑表单时,xml值会更新。
首先我解析XML:Updater.cs
XmlNodeList elemList = doc.GetElementsByTagName("property");
for (int i = 0; i < elemList.Count; i++)
{
if (elemList[i].Attributes["value"] != null)
{
AppProperty property = new AppProperty(elemList[i].Attributes["name"].Value, elemList[i].Attributes["value"].Value);
properties.Add(property);
}
}
然后我将其发送到表单并更新表单数据集: Form1.cs的
private void Form1_Load(object sender, System.EventArgs e)
{
this.dataGridView1.SelectionMode =
DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.DataSource = properties;
this.dataGridView1.AutoGenerateColumns = false;
}
现在,当用户编辑时,我会触发一个事件监听器:Form.cs
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
updater.updateSave();
}
然后返回我的updater类并保存文档:Updater.cs
public void updateSave()
{
foreach (string f in filePaths)
doc.Save(f);
}
该文件看起来已保存,因为它已将“修改日期:”更新为我使用保存的那一刻。我确定有一些参考价值混淆但我无法弄明白
为什么没有进行更改?
答案 0 :(得分:1)
您没有更改XML文档,而是更改某些属性的副本
if (elemList[i].Attributes["value"] != null)
{
//You're making a copy of the attribute's value here:
AppProperty property = new AppProperty(elemList[i].Attributes["name"].Value, elemList[i].Attributes["value"].Value);
properties.Add(property);
}
GridView更改properties
数据集,这些更改不会传播回XML文档。