An interface to filter Row objects in GridControl.

Namespace: Dapfor.Wpf.Controls
Assembly: Dapfor.Wpf (in Dapfor.Wpf.dll) Version: 4.1.0.26317 (4.1.0.26317)

Syntax

C#
public interface IFilter
Visual Basic
Public Interface IFilter
Visual C++
public interface class IFilter
F#
type IFilter =  interface end

Remarks

Demonstrates how to set and use the filter
 Copy imageCopy
   //Some data object
   public class Product : INotifyPropertyChanged
   {
       private double _price;
       public double Price
       {
           get { return _price; }
           set
           {
               //If the price is not the same, change it and notify about price changing
               if (_price != value)
               {
                   _price = value;
                   //The event can be raised from any thread. The grid will synchronize thread with GUI without blocking the calling thread.
                   //While painting, sorting or filtering the grid can ask this object in the GUI (!) thread to return the price value.
                   if (PropertyChanged != null)
                   {
                       PropertyChanged(this, new PropertyChangedEventArgs("Price"));
                   }
               }
           }
       }
       public event PropertyChangedEventHandler PropertyChanged;
   }

   public void HowToSetFilter(GridControl grid)
   {
       //Set a filter that hides all rows, that contain products with price less than 10
       grid.Filter = new Filter(row =>
       {
           //There are three ways to get price: 
           //1. From the Cell through the Value property, which returns a double value: row["Price"].Value
           //2. Through the IDataAccessor and IDataField: row.DataAccessor["Price"].Value
           //3. From the data object itself: ((Product)row.DataObject).Price
           if ((double) row["Price"].Value < 10)
           {
               //Filter the row
               return true;
           }
           //The row is not filtered
           return false;
    });

    //Populate the grid
    Product product1 = new Product();
    Product product2 = new Product();

    grid.Rows.Add(product1);
    grid.Rows.Add(product2);

    //Update the product's price
    //Data objects will notify the Grid, and it will display only the product2. 
    //The product1 will be hidden
    product1.Price = 9;
    product2.Price = 11;
}

See Also