2016-05-31 49 views
0

如果我去選擇一個新的XML文件,並附加它作爲數據源的DataGridView它並不能取代電網的內容,但追加到它:DataGridView的數據源內容複製

private void buttonSelectXML_Click(object sender, EventArgs e) 
{ 
    OpenFileDialog dlgFile = new OpenFileDialog(); 

    dlgFile.Title = "Select XML file"; 
    dlgFile.Filter = "XML files (*.xml)|*.xml"; 
    dlgFile.FilterIndex = 0; 
    dlgFile.Multiselect = false; 
    dlgFile.InitialDirectory = Path.GetDirectoryName(textBoxXML.Text); 
    dlgFile.FileName = textBoxXML.Text; 

    if (dlgFile.ShowDialog() == DialogResult.OK) 
    { 
     Properties.Settings.Default.XMLPath = dlgFile.FileName; 
     textBoxXML.Text = dlgFile.FileName; 

     dataSet.ReadXml(textBoxXML.Text); 
     dataGridView.DataSource = dataSet.Tables[0]; 
    } 
} 

什麼是以替換當前網格內容與新的XML數據源的正確方式,而不是追加

謝謝。

+0

ASP.NET或Winform的? – Rahul

+0

糟糕 - 我現在添加了標籤winform。 –

+1

'dataSet.Tables.Clear();' – LarsTech

回答

1

無論哪種方式,它不應該是這樣,你的網格數據應該刷新,因爲你重新綁定它。作爲替代方案,嘗試設置數據源爲null像

dataSet.ReadXml(textBoxXML.Text); 
    dataGridView.DataSource = null; 
    dataGridView.DataSource = dataSet.Tables[0]; 
+0

謝謝。這似乎沒有解決它。在我的具體情況下,原始數據源和新選定的數據源實際上是相同的文件。這很重要嗎? –

+1

不應該是,但看起來像你的數據集是一個全局對象。考慮在每次調用事件處理程序(OR)時使用單獨的實例,在重新填充之前清空數據集。 – Rahul

+0

啊我想我需要一個全局數據集。那是錯的嗎?它僅僅是xml和數據網格之間的臨時性轉換嗎? –

0

我想你應該叫

dataGridView.DataBind()