Spread Windows Forms 13.0 Product Documentation
FarPoint.Win.Spread Assembly / FarPoint.Win.Spread Namespace / ColumnHeader Class / AutoFilterIndex Property
Example


In This Topic
    AutoFilterIndex Property (ColumnHeader)
    In This Topic
    Gets or sets which column header row displays the row filter indicator when there are multiple column header rows.
    Syntax
    'Declaration
     
    Public Property AutoFilterIndex As Integer
    'Usage
     
    Dim instance As ColumnHeader
    Dim value As Integer
     
    instance.AutoFilterIndex = value
     
    value = instance.AutoFilterIndex
    public int AutoFilterIndex {get; set;}

    Property Value

    Integer index of the row
    Remarks

    If your header has multiple column header rows, you can specify which row displays the filtering indicator by setting this property. To specify the index, set the property to a value between 0 and n-1, where 0 is the top row and n is the number of header rows. Any value above n-1 simply puts the filtering indicator in the bottom row.

    If you set this property to specify a row to display the filtering indicator, for example, header row 3, and then later change the number of column header rows to be less than 3, the filtering indicator is displayed in the bottom row, as if the RowCount property is set to -1. However, if you then change the number of header rows to 3 or greater, the filtering indicator is again displayed in header row 3. Use the RowCount property to specify how many column header rows the component displays.

    This property does not have an effect unless the Visible property (or the SheetView.ColumnHeaderVisible property) is set to true and the column header rows are not hidden.

    Example
    This example designates the row in the column headers in which to display the filter icon.
    fpSpread1.ActiveSheet.ColumnHeaderRowCount = 3;
    fpSpread1.ActiveSheet.ColumnHeader.AutoFilterIndex = 1;
    
    FarPoint.Win.Spread.NamedStyle instyle = new FarPoint.Win.Spread.NamedStyle();
    FarPoint.Win.Spread.NamedStyle outstyle = new FarPoint.Win.Spread.NamedStyle();
    instyle.BackColor = Color.Yellow;
    outstyle.BackColor = Color.Aquamarine;
    
    FarPoint.Win.Spread.FilterColumnDefinition fcd = new FarPoint.Win.Spread.FilterColumnDefinition(1);
    FarPoint.Win.Spread.FilterColumnDefinition fcd1 = new FarPoint.Win.Spread.FilterColumnDefinition(2);
    FarPoint.Win.Spread.FilterColumnDefinition fcd2 = new FarPoint.Win.Spread.FilterColumnDefinition(3);
    
    CustomFilter cfi = new CustomFilter(fpSpread1.ActiveSheet);
    fcd.Filters.Add(cfi);
    
    FarPoint.Win.Spread.StyleRowFilter srf = new FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet, instyle, outstyle);
    srf.AddColumn(fcd);
    srf.AddColumn(fcd1);
    srf.AddColumn(fcd2);
    
    fpSpread1.ActiveSheet.RowFilter = srf;
    
    [Serializable()]
    public class CustomFilter : FarPoint.Win.Spread.BaseFilterItem //Create a sub-class inheriting BaseFilterItem class.
    {
       FarPoint.Win.Spread.SheetView sv = null;
    
       public CustomFilter() : base()
       {
       }
    
       public CustomFilter(FarPoint.Win.Spread.SheetView sheetView): base()
       {
          this.sv = sheetView;
       }
    
       //Returns names to be displayed in a drop-down list.
       public override string DisplayName
       {
          get
          {
             return "Contains an 'A'";
          }
       }
    
       //Set sheets to filters.
       public override FarPoint.Win.Spread.SheetView SheetView
       {
          set
          {
             sv = value;
          }
       }
    
       //Evaluate specified values by particular conditions.
       public bool IsFilteredIn(object value)
       {
          if (!((object)value == null) && value is string && ((string)value).Contains('A'))
          {
             return true;
          }
          return false;
       }
    
       //Display names returned by DisplayName property.
       public override bool ShowInDropDown(int columnIndex, int[] filteredInRowList)
       {
          return true;
       }
    
       //Execute filtering in the column specified in a sheet.
       public override int[] Filter(int columnIndex)
       {
          ArrayList list = new ArrayList();
          int[] returnList = null;
          int row;
    
          if (sv == null)
          {
             return returnList;
          }
    
          for (row = 0; row <= (sv.RowCount - 1); row++)
          {
             if ((object)sv.GetValue(row, columnIndex) != null)
             {
                object value = (object)sv.GetValue(row, columnIndex);
                if (IsFilteredIn(value))
                {
                   //Add row indexes that meet conditions sequentially.
                   list.Add(row);
                }
             }
          }
    
          //When there are any rows that meet conditions, copy them to arrays.
          if (list.Count > 0)
          {
             returnList = new int[list.Count];
             list.CopyTo(returnList);
             list.Clear();
          }
    
          //Return all row indexes that meet conditions.
          return returnList;
       }
    
       //When any data that has to be serialized is included in a custom filter class, override it.
       public override bool Serialize(System.Xml.XmlTextWriter w)
       {
          w.WriteStartElement("CustomFilter");
          base.Serialize(w);
          w.WriteEndElement();
          return true;
       }
    
       public override bool Deserialize(System.Xml.XmlNodeReader r)
       {
          if (r.NodeType == System.Xml.XmlNodeType.Element)
          {
             if (r.Name.Equals("CustomFilter"))
             {
                base.Deserialize(r);
             }
          }
          return true;
       }
    }
    fpSpread1.ActiveSheet.ColumnHeaderRowCount = 3
    fpSpread1.ActiveSheet.ColumnHeader.AutoFilterIndex = 1
        
    Dim instyle As New FarPoint.Win.Spread.NamedStyle()
    Dim outstyle As New FarPoint.Win.Spread.NamedStyle()
    instyle.BackColor = Color.Yellow
    outstyle.BackColor = Color.Aquamarine
        
    Dim fcd As New FarPoint.Win.Spread.FilterColumnDefinition(1)
    Dim fcd1 As New FarPoint.Win.Spread.FilterColumnDefinition(2)
    Dim fcd2 As New FarPoint.Win.Spread.FilterColumnDefinition(3)
        
    Dim cfi As New CustomFilter(fpSpread1.ActiveSheet)
    fcd.Filters.Add(cfi)
        
    Dim srf As New FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet, instyle, outstyle)
    srf.AddColumn(fcd)
    srf.AddColumn(fcd1)
    srf.AddColumn(fcd2)
        
    fpSpread1.ActiveSheet.RowFilter = srf
    
    <Serializable()>
    'Create a sub-class inheriting BaseFilterItem class.
    Public Class CustomFilter Inherits FarPoint.Win.Spread.BaseFilterItem
       Private sv As FarPoint.Win.Spread.SheetView = Nothing
    
       Public Sub New() : MyBase
       End Sub
    
       Public Sub New(ByVal sheetView As FarPoint.Win.Spread.SheetView) : MyBase
          Me.sv = sheetView
       End Sub
    
       'Returns names to be displayed in a drop-down list.
       Public Overrides ReadOnly Property DisplayName() As String
          Get
             Return "Contains an 'A'"
          End Get
       End Property
    
       'Set sheets to filters.
       Public Overrides WriteOnly Property SheetView() As FarPoint.Win.Spread.SheetView
          Set(ByVal value As FarPoint.Win.Spread.SheetView)
             sv = value
          End Set
       End Property
    
       'Evaluate specified values by particular conditions.
       Public Function IsFilteredIn(ByVal value As Object) As Boolean
          If Not (CObj(value) Is Nothing) AndAlso TypeOf value Is String AndAlso (CStr(value)).Contains("A") Then
             Return True
          End If
             Return False
       End Function
    
       'Display names returned by DisplayName property.
       Public Overrides Function ShowInDropDown(ByVal columnIndex As Integer, ByVal filteredInRowList As Integer()) As Boolean
          Return True
       End Function
    
       'Execute filtering in the column specified in a sheet.
       Public Overrides Function Filter(ByVal columnIndex As Integer) As Integer()
          Dim list As ArrayList = New ArrayList()
          Dim returnList As Integer() = Nothing
          Dim row As Integer
    
          If sv Is Nothing Then
             Return returnList
          End If
    
          For row = 0 To (sv.RowCount - 1) Step row+1
             If CObj(sv.GetValue(row, columnIndex)) IsNot Nothing Then
                Dim value As Object = CObj(sv.GetValue(row, columnIndex))
                If IsFilteredIn(value) Then
                   list.Add(row)
                End If
             End If
          Next
    
          'When there are any rows that meet conditions, copy them to arrays.
          If list.Count > 0 Then
             returnList = New Integer(list.Count) {}
             list.CopyTo(returnList)
             list.Clear()
          End If
    
          'Return all row indexes that meet conditions.
          Return returnList
       End Function
    
       'When any data that has to be serialized is included in a custom filter class, override it.
       Public Overrides Function Serialize(ByVal w As System.Xml.XmlTextWriter) As Boolean
          w.WriteStartElement("CustomFilter")
          MyBase.Serialize(w)
          w.WriteEndElement()
          Return True
       End Function
    
       Public Overrides Function Deserialize(ByVal r As System.Xml.XmlNodeReader) As Boolean
          If r.NodeType = System.Xml.XmlNodeType.Element Then
             If r.Name.Equals("CustomFilter") Then
                MyBase.Deserialize(r)
             End If
          End If
          Return True
       End Function
    End Class
    See Also