FarPoint.Win.Spread アセンブリ > FarPoint.Win.Spread 名前空間 > ColumnHeader クラス : AutoFilterIndex プロパティ |
ヘッダに複数の列ヘッダ行がある場合は、このプロパティを設定することで、フィルタ インジケータを表示する行を指定できます。インデックスを指定するには、このプロパティを0から n-1 までのいずれかの値に設定します(0は一番上の行、n はヘッダの行数を示します)。n-1 よりも大きい値にすると、フィルタ インジケータは単に一番下の行に表示されます。
このプロパティの設定で、フィルタ インジケータを表示する行をたとえばヘッダ行3と指定し、その後列ヘッダ行の数を3未満に変更した場合、フィルタ インジケータは RowCount プロパティを -1に設定した場合と同様、一番下の行に表示されます。ただし、その後ヘッダ行の数を3以上に変更すると、フィルタ インジケータは再びヘッダ行3に表示されます。コントロールに表示される列ヘッダの行数は、RowCount プロパティで指定します。
このプロパティが効力を持つのは、Visible プロパティ(または SheetView.ColumnHeaderVisible プロパティ)が True に設定されていて、なおかつ列ヘッダ行が非表示でない場合です。
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