Articles in this section
Category / Section

How to serialize the filtered values based on filter mode of the column in WPF DataGrid (SfDataGrid)?

2 mins read

The filtered values from both FilterMode will be serialized by default in WPF DataGrid (SfDataGrid). If you want to serialize the filtered values based on either AdvancedFilter mode or CheckBoxFilter mode, write custom SerializationController and overriding the StoreFilterPredicates method, where you need to store the filter values based on the Column.FilteredFrom property.

Refer to the following code example to serialize the filter values based on FilterMode.

this.AssociatedObject.SerializationController = new CustomSerializationController(this.AssociatedObject);
 
public class CustomSerializationController : SerializationController
{
     public CustomSerializationController(SfDataGrid dataGrid) : base(dataGrid)
     {
 
     }
        
     protected override SerializableFilterSettings StoreFilterPredicates(SfDataGrid dataGrid, SerializationOptions serializeOptions)
     {
         SerializableFilterSettings filterSettings = new SerializableFilterSettings();
         if (!serializeOptions.SerializeFiltering)
             return filterSettings;
 
         foreach (var column in dataGrid.Columns.Where(c => c.FilterPredicates.Count > 0 && c.FilteredFrom== FilteredFrom.AdvancedFilter))
         {
              SerializableFilterSetting filterSetting = new SerializableFilterSetting() 
              { 
                  ColumnName = column.MappingName, 
                  Filter = new ObservableCollection<SerializableFilter>() 
              };
              foreach (var filterPredicate in column.FilterPredicates)
              {
                   SerializableFilter filter = new SerializableFilter() 
                   { 
                        FilterBehavior = filterPredicate.FilterBehavior, 
                        FilterType = filterPredicate.FilterType, 
                        FilterValue = filterPredicate.FilterValue, 
                        IsCaseSensitive = filterPredicate.IsCaseSensitive,  
                        PredicateType = filterPredicate.PredicateType 
                   };
                   filterSetting.Filter.Add(filter);
              }
              filterSettings.Add(filterSetting);
         }
         return filterSettings;
     }
}

View sample in GitHub.

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied