为什么创建中WriteXML一个新的XML文件
我尝试使用ReadXml
和WriteXml
加载/保存一个XML文件中datagrid
,但WriteXml
方法只需要创建一个新的空文件,而不是更改保存到旧的。详情请看:[链接] [1]为什么创建中WriteXML一个新的XML文件
---------------------------------- update-- --------------------------------------
private void RefreshModule()
{
ModulesView = new ListCollectionView(sdb.GetModules())
{
Filter = obj =>
{
var Module = (Module)obj;
return SelectedProduct != null && SelectedProduct.ModelNumber == Module.ModelNumber;
}
};
}
private Product selectedProduct;
public Product SelectedProduct
{
get { return selectedProduct; }
set
{
if (selectedProduct != value)
{
selectedProduct = value;
NotifyPropertyChanged();
RefreshModule();
}
}
}
您的SaveDataSet
方法StoreDbDataSet
类应取DataSet
参数并将其序列化到该文件。
public void SaveDataSet(DatatSet ds)
{
ds.WriteXmlSchema(DatabaseConstructorName);
ds.WriteXml(DatabaseFileName);
ds.AcceptChanges();
}
但如何是你应该能够序列化DataSet
如果设置了DataGrid
的一个ObservableCollection
的ItemsSource
财产?
返回的DataSet
从GetModules
方法:
public DataSet GetModules()
{
return StoreDbDataSet.ReadDataSet();
}
并绑定到DataTable
的DataView
。事情是这样的:
private DataSet _ds;
private void RefreshModule()
{
_ds = sdb.GetModules();
ModulesView = new ListCollectionView(ds.Tables["Modules"].DefaultView)
{
Filter = obj =>
{
var Module = obj as DataRowView;
return SelectedProduct != null && SelectedProduct.ModelNumber == Module["ModelNumber"].ToString(); //ModuleNumber is the column name in the DataTable
}
};
}
private void Writecfg_Button_Click(object sender, RoutedEventArgs e)
{
StoreDbDataSet sdb = new StoreDbDataSet();
sdb.SaveDataSet(_ds);
}
对不起,我很晚才回复。在我试过你的代码之后,'DataTable' **模块**不会填充任何东西,并且在代码中有一个警告'可能的非预期参考比较' –
Product类的ModelNumber属性是int还是字符串? – mm8
它是一个'string'类型。 –
的可能的复制[保存数据网格变回XML文件(https://stackoverflow.com/questions/44541693/save-datagrid-changes-back-to-xml-file) –
不要重复相同的问题。在你原来的问题中,我看不到试图使用'WriteXml',你可能没有正确使用它。 –
对不起,但我真的需要解决这个问题。我试图'StoreDbDataSet sdb = new StoreDbDataSet(); sdb.WriteXml(“store.xml”);'在'Button_Click'事件中,事实证明它创建了一个新的'store.xml'文件。 –