it-swarm.com.ru

Очистить значения сетки данных в wpf

Мне нужно очищать мой 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;
    }
}

Но каждый раз, когда я нажимаю на элемент дерева, сетка данных не очищается - она ​​дополняется входящими данными. Я использовал и dataGrid1.Columns.Clear() и dataGrid.ItemSource= null; Как я могу это сделать ??

8
BinaryMee

Если вы заполняете DataGrid с помощью: 

dataGrid.Items.Add(someObject);

Тогда вы сможете использовать:

dataGrid.Items.Clear(); 

Удалить все строки.

Если вы привязываетесь к ItemsSource, как:

dataGrid.ItemsSource = someCollection;

Тогда вы сможете установить для ItemsSource значение null, и оно удалит все строки. 

Правка:

Не забудьте обновить его:

dataGrid.Items.Refresh();
25
Rhexis

Я попробовал несколько подходов, и это был безусловно самый лучший и самый надежный:

dataGrid.Columns.Clear();
dataGrid.Items.Clear();
dataGrid.Items.Refresh();
3
polfosol ఠ_ఠ

Вы можете использовать класс ObservableCollection<> вместо IEnumerable<>.

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

Вы можете очистить сетку данных, используя приведенный ниже код.

users.Clear();
2
klaydze

У меня была открытая коллекция IEnumerable, которая добавляется при каждом вызове функции. Таким образом, перезаписав его, я сбросил данные в свой Datagrid.

0
BinaryMee