2013-01-23 77 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();