WPF / C # - Как обновить набор данных при фильтрации по DataView? - PullRequest
0 голосов
/ 07 мая 2018

Мне нужно отфильтровать элементы, показанные на DataGrid. Для этого я сделал функцию OnlyActiveTile, где я даю DataTable, мне нужно отфильтровать. Фильтрация работает, но есть проблема: когда я нажимаю кнопку для переключения между ItemsSource, она не обновляет мой DataSet. Я что-то упускаю, но я не знаю, что ...

   private void OnlyActiveClick(DataTable DT, string ColumnName, DataGrid DG, Tile OnlyActiveTile, bool ToggleActive)
    {
        if (ToggleActive)
        {
            DG.ItemsSource = new DataView(DT.AsEnumerable().Where(row => row.Field<bool>(ColumnName) == true).CopyToDataTable());

            DT.GetChanges();
            DT.AcceptChanges();

            OnlyActiveTile.Background = Brushes.DarkSeaGreen;
        }
        else 
        {

            DG.ItemsSource = new DataView(DT);

            DT.GetChanges();
            DT.AcceptChanges();

            OnlyActiveTile.Background = Brushes.IndianRed;
        }
    }

    private void ZoneOnlyActive_Click(object sender, RoutedEventArgs e)
    {
        if (zone_onlyActive)
        {
            OnlyActiveClick(databaseDataSet.Zone,"Zone active", zoneDataGrid, ZoneOnlyActive, zone_onlyActive);
            zone_onlyActive = false;
        }
        else
        {
            OnlyActiveClick(databaseDataSet.Zone, "Zone active", zoneDataGrid, ZoneOnlyActive, zone_onlyActive);
            zone_onlyActive = true;
        }
    }

Если я отфильтрую свои результаты (обновлю ItemsSource), а затем внесу некоторые изменения в DataGrid, это не обновит мои DataSet.

Проблема может существовать, потому что databaseDataSet.Zone это не DataTable, а defaultDataSet.ZoneDataTable. Так может кто-нибудь сказать мне, что я должен изменить?

...