清除wpf中的datagrid值

时间:2013-01-23 05:13:23

标签: c# .net wpf datagrid

每次点击datagrid时,我都需要刷新treeviewitem。我的代码如下。

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

但每当我点击树视图项时,datagrid都不会被清除 - 它会附加传入数据。 我同时使用了dataGrid1.Columns.Clear()dataGrid.ItemSource= null; 我怎么能这样做?

7 个答案:

答案 0 :(得分:25)

如果使用以下方法填充DataGrid:

dataGrid.Items.Add(someObject);

然后你应该可以使用:

dataGrid.Items.Clear(); 

删除所有行。

如果您绑定到ItemsSource,如:

dataGrid.ItemsSource = someCollection;

然后你应该能够将ItemsSource设置为null,它将删除所有行。

编辑:

不要忘记刷新它:

dataGrid.Items.Refresh();

答案 1 :(得分:3)

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

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

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

users.Clear();

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

我有一个公共IEnumerable集合,每次调用该函数时都会附加该集合。因此,通过覆盖它,我刷新了Datagrid中的数据。

答案 4 :(得分:0)

我能够通过将DataContext设置为null来清除我的数据网格。

DataGrid.DataContext=null;

答案 5 :(得分:-1)

如果绑定了Itemsource,最简单的方法是

dataGrid1.ItemSource = null;

答案 6 :(得分:-1)

在清除项目之前,您必须取消绑定项目源

MyGrid.ItemsSource = null;**//un-bind the itemsource first**
MyGrid.Items.Clear();**//**