0
我有一個DataGridView的設置對話框和一個確定/取消按鈕。當對話框打開時,會提供一個可能存在也可能不存在的XML文件,並顯示其內容。無論文件是否存在,用戶都必須能夠修改DataGridView中每個單元格中的數據,以及能夠添加或刪除行。單擊確定按鈕後,必須將DataGridView的內容導出到最初提供的XML文件。將XML綁定到可編輯的DataGridView,允許加載並保存
我一直在這玩弄了好幾個小時,而且我似乎無法一次完成所有這些要求。
我用過的一些類包括XmlDataDocument,List,DataSet,DataTable和BindingSource。
這是我目前的實現(失敗)。需要注意的是:我已經手動將所有列設置爲ReadOnly = false。我可以添加新的列,但我無法弄清楚如何允許刪除列。
public partial class DefineAuctionRulesetDialog : Form
{
private string _rulesetFile;
private DataSet _dataSet;
public DefineAuctionRulesetDialog(string rulesetFile)
{
this.Text = "Define Auction Ruleset: " + rulesetFile;
_rulesetFile = "auctions\\" + rulesetFile + ".xml";
InitializeComponent();
_dataSet = new DataSet("AuctionRuleset");
LoadRulesFromFile();
}
private void LoadRulesFromFile()
{
List<AuctionRules> rules = new List<AuctionRules>();
if (System.IO.File.Exists(_rulesetFile))
{
_dataSet.ReadXml(_rulesetFile);
}
dgvRules.DataSource = _dataSet;
//dgvRules.DataMember = "AuctionRule"; can't do this unless the file exists (the dataset needs data)
}
private void SaveRulesToFile()
{
if (dgvRules.DataSource != null)
{
_dataSet = (DataSet)(dgvRules.DataSource); //setting it to itself?
_dataSet.WriteXml(_rulesetFile);
}
}
private void btnOK_Click(object sender, EventArgs e)
{
SaveRulesToFile();
DialogResult = DialogResult.OK;
}
private void btnCancel_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Cancel;
}
}