Add column filter after setState

Hello there, 

i use your SFDataGrid and have the following problem.

When a filter is added to a column by the user, I store all the filters in a map variable. Now when I do an action and go back to the grid with setState I want the filter to be set again. I use the following function to set the filter.

 void loadFilder() {
    if (widget.gridFilter.isNotEmpty) {
      widget.gridFilter.forEach((key, value) {
        for (var element in value) {
          gridDataSource.addFilter(key, element);
        }
      });
    }
  }

 The problem now is that the filter is set in the column header, but the data is not filtered. If I sort any column then the filter will be applied. Do you have an idea?



1 Reply

TP Tamilarasan Paranthaman Syncfusion Team February 3, 2023 09:53 AM UTC

Hi Mario, 


Based on the information you have provided, we have been unable to reproduce the issue you have described. We have conducted tests using a sample in which we save the filter conditions in the onFilterChanged callback to a map collection, and then load those conditions in the initState method when returning to the DataGrid page. Please check the following sample and code snippet for references. 


 Map<String, List<FilterCondition>> filterConditions = {};

 

 @override

  void initState() {

    super.initState();

    employees = populateData();

    _employeeDataSource = EmployeeDataSource(employees);

    loadFilter();

  }

 

  void loadFilter() {

    if (filterConditions.isNotEmpty) {

      for (var key in filterConditions.keys) {

        for (var filtercondition in filterConditions[key]!) {

          _employeeDataSource.addFilter(key, filtercondition);

        }

      }

    }

  }

 

  @override

  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(title: const Text('Flutter DataGrid')),

      body: SfDataGrid(

          allowFiltering: true,

          source: _employeeDataSource,

          onFilterChanged: (details) {

            filterConditions[details.column.columnName] =

                details.filterConditions;

          },

          columnWidthMode: ColumnWidthMode.fill,

          columns: getColumns),

    );

  }


Sample: https://www.syncfusion.com/downloads/support/directtrac/general/ze/Sample955221099  


If you are still encountering the issue, we would appreciate it if you could modify the sample we provided to create a reproducible example of the issue and provide us with the steps needed to reproduce the issue. This will help us investigate the issue further and provide a solution as soon as possible.


Regards,

Tamilarasan


Loader.
Up arrow icon