2016-05-31 96 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()