2013-01-23 32 views
5

Tôi cần xóa số datagrid mỗi lần khi nhấp vào treeviewitem. Mã của tôi được đưa ra dưới đây.Xóa các giá trị dữ liệu trong wpf

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; 
    } 
} 

Nhưng mỗi khi tôi nhấp vào dữ liệu mục treeview không được xóa - nó được nối với dữ liệu đến. Tôi đã sử dụng cả hai dataGrid1.Columns.Clear()dataGrid.ItemSource= null; Tôi có thể làm điều này bằng cách nào?

Trả lời

18

Nếu bạn đang Populating DataGrid bằng cách sử dụng:

dataGrid.Items.Add(someObject); 

Sau đó, bạn sẽ có thể sử dụng:

dataGrid.Items.Clear(); 

Để loại bỏ tất cả các hàng.

Nếu bạn đang liên kết với các ItemsSource thích:

dataGrid.ItemsSource = someCollection; 

Sau đó, bạn sẽ có thể thiết lập các ItemsSource null và nó sẽ loại bỏ tất cả các hàng.

EDIT:

Đừng quên làm mới nó:

dataGrid.Items.Refresh(); 
+0

Am với ItemsSource. tôi đã đặt nó thành null. Đó là câu hỏi của tôi. Nhưng dữ liệu của tôi vẫn chưa được xóa .. – BinaryMee

+0

Đó có phải là vị trí duy nhất bạn đang điền vào nó không? – Rhexis

+1

thử làm mới nó: dataGrid.Items.Refresh(); – Rhexis

0

Tôi đã có một bộ sưu tập IEnumerable nào đó được nối mọi lúc khi hàm được gọi. Vì vậy, bằng cách ghi đè nó, tôi đã xóa Dữ liệu trong Datagrid của mình ..

1

Bạn có thể xem xét sử dụng lớp ObservableCollection<> thay vì IEnumerable<>.

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

Bạn có thể xóa dữ liệu bằng cách sử dụng mã bên dưới.

users.Clear(); 
1

Tôi đã thử nhiều cách tiếp cận và điều này là bởi đến nay là tốt nhất và đáng tin cậy nhất: populating

dataGrid.Columns.Clear(); 
dataGrid.Items.Clear(); 
dataGrid.Items.Refresh(); 
Các vấn đề liên quan