Мне нужно отфильтровать элементы, показанные на 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
. Так может кто-нибудь сказать мне, что я должен изменить?