2013-01-23 79 views
5

每次点击treeviewitem时,需要刷新我的datagrid。我的代码如下。清除wpf中的datagrid值

private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) 
{ 
    this.dataGrid1.Columns.Clear(); 
    this.dataGrid1.ItemsSource= null; 
    String path =this.treeView1.SelectedItem; 
    if (!File.Exists(path)) 
     MessageBox.Show("Not Found"); 
    else 
    { 
     ob.provider(path); 

     // String data = @"C:\logs.xml"; 
     string data = path; 
     objref.functionality(data); 
     this.dataGrid1.ItemsSource = objref.Result; 
    } 
} 

但每次当我点击一个treeview项时,datagrid没有被清除 - 它附加了传入数据。 我用dataGrid1.Columns.Clear()dataGrid.ItemSource= null; 我该怎么做?

回答

18

如果您是使用填充DataGrid:

dataGrid.Items.Add(someObject); 

那么你应该能够使用:

dataGrid.Items.Clear(); 

要删除所有行。

如果绑定到的ItemsSource喜欢:

dataGrid.ItemsSource = someCollection; 

那么你应该能够设置的ItemsSource为null,它会删除所有行。

编辑:

不要忘记刷新:

dataGrid.Items.Refresh(); 
+0

上午填充。我已经将它设置为空。这是我的问题。但我的数据网格仍然没有清除。 – BinaryMee

+0

这是你填充它的唯一位置吗? – Rhexis

+1

尝试刷新它:dataGrid.Items.Refresh(); – Rhexis

0

我有哪些附加每次当功能被称为公共IEnumerable集合。所以通过覆盖它我刷新了DataGrid中的数据..

1

您可以考虑使用ObservableCollection<>类而不是IEnumerable<>

ObservableCollection<User> users = new ObservableCollection<User>(); 
dataGrid1.ItemsSource = users; 

您可以使用下面的代码清除数据网格。

users.Clear(); 
1

我尝试了好几种方法,这是迄今为止最好的和最可靠的一个:用的ItemsSource

dataGrid.Columns.Clear(); 
dataGrid.Items.Clear(); 
dataGrid.Items.Refresh();