Spread Windows Forms 11.0 Product Documentation
GroupComparer Property (GroupingEventArgs)
Example 


FarPoint.Win.Spread Assembly > FarPoint.Win.Spread Namespace > GroupingEventArgs Class : GroupComparer Property
Gets or sets the group comparer.
Syntax
'Declaration
 
Public Property GroupComparer As IComparer
'Usage
 
Dim instance As GroupingEventArgs
Dim value As IComparer
 
instance.GroupComparer = value
 
value = instance.GroupComparer
public IComparer GroupComparer {get; set;}

Property Value

IComparer object containing the comparer for the grouping
Example
[Serializable()]
public class MyGroupComparer1 : IComparer
{
      private bool birthDate = true;

      public MyGroupComparer1(bool bd)
      {
            birthDate = bd;
      }

      public int Compare(object x1, object y1)
      {
            int x;
            int y;
            x = 0;
            y = 0;
            if (birthDate)
            {
                  if ((x1) is DateTime)
                  {
                        x = ((DateTime)(x1)).Year % 10;
                        x = ((DateTime)(x1)).Year - x;
                  }
                  if ((y1) is DateTime)
                  {
                        y = ((DateTime)(y1)).Year % 10;
                        y = ((DateTime)(y1)).Year - y;
                  }
            }
            else
            {
                  if ((x1) is DateTime)
                  {
                        x = ((DateTime)(x1)).Year;
                  }
                  if ((y1) is DateTime)
                  {
                        y = ((DateTime)(y1)).Year;
                  }
            }
            if (x == y)
            {
                  return 0;
            }
            else if (x > y)
            {
                  return 1;
            }
            else
            {
                  return -1;
            }
      }
}

fpSpread1.AllowColumnMove = true;
fpSpread1.ActiveSheet.GroupBarInfo.Visible = true;
fpSpread1.ActiveSheet.AllowGroup = true

FarPoint.Win.Spread.GroupInfo gi = new FarPoint.Win.Spread.GroupInfo();
gi.BackColor = Color.Yellow 

FarPoint.Win.Spread.GroupInfo gi2 = new FarPoint.Win.Spread.GroupInfo();
gi2.BackColor = Color.Green

FarPoint.Win.Spread.GroupInfoCollection gic = new FarPoint.Win.Spread.GroupInfoCollection();
gic.AddRange(new FarPoint.Win.Spread.GroupInfo[] { gi, gi2 });

fpSpread1.ActiveSheet.GroupInfos.Add(gic[0]);

void fpSpread1Grouping(object sender, GroupingEventArgs e)
{
      int n = e.SortInfo.Length;
      if ((n == 0))
      {
            e.Cancel = true;
      }
      int c = e.SortInfo[n - 1].Index;
      FarPoint.Win.Spread.FpSpread ss = (FarPoint.Win.Spread.FpSpread)sender;
      FarPoint.Win.Spread.Model.DefaultSheetDataModel dm;
      if ((ss.ActiveSheet.Models.Data) is FarPoint.Win.Spread.Model.DefaultSheetDataModel)
      {
            dm = (FarPoint.Win.Spread.Model.DefaultSheetDataModel)ss.ActiveSheet.Models.Data;
      }
      else
      {
            dm = (FarPoint.Win.Spread.Model.DefaultSheetDataModel)((FarPoint.Win.Spread.Model.GroupDataModel)ss.ActiveSheet.Models.Data).TargetModel;
      }

      c = dm.GetDataColumnFromModelColumn(c);
      if (dm.GetDataView().Table.Columns[c].DataType.Equals(typeof(DateTime)))
      {
            if ((dm.GetDataView().Table.Columns[c].Caption.IndexOf("Birth") >= 0))
            {
                  e.GroupComparer = new MyGroupComparer1(true);
            }
            else
            {
                  e.GroupComparer = new MyGroupComparer1(false);
            }
      }
}
[Serializable()] 
Public Class MyGroupComparer
 Implements IComparer

 Private birthDate As Boolean = True
 Public Sub New(ByVal bd As Boolean)
  birthDate = bd
 End Sub

 Public Function Compare(ByVal x1 As Object, ByVal y1 As Object) As Integer Implements System.Collections.IComparer.Compare

  Dim x, y As Integer
  x = 0
  y = 0

  If birthDate Then
   If TypeOf (x1) Is DateTime Then
    x = CType(x1, DateTime).Year Mod 10
    x = CType(x1, DateTime).Year - x
   End If
   If TypeOf (y1) Is DateTime Then
    y = CType(y1, DateTime).Year Mod 10
    y = CType(y1, DateTime).Year - y
   End If
  Else
   If TypeOf (x1) Is DateTime Then
    x = CType(x1, DateTime).Year
   End If
   If TypeOf (y1) Is DateTime Then
    y = CType(y1, DateTime).Year
   End If
  End If

  If x = y Then
   Return 0
  ElseIf x > y Then
   Return 1
  Else
   Return -1
  End If
 End Function

End Class

FpSpread1.AllowColumnMove = True
FpSpread1.ActiveSheet.GroupBarInfo.Visible = True
FpSpread1.ActiveSheet.AllowGroup = True

Dim gi As New FarPoint.Win.Spread.GroupInfo
gi.BackColor = Color.Yellow

Dim gi2 As New FarPoint.Win.Spread.GroupInfo
gi2.BackColor = Color.Green

Dim gic As New FarPoint.Win.Spread.GroupInfoCollection()
gic.AddRange(New FarPoint.Win.Spread.GroupInfo() {gi, gi2})

FpSpread1.ActiveSheet.GroupInfos.Add(gic.Item(0))

Private Sub FpSpread1Grouping(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.GroupingEventArgs) Handles FpSpread1.Grouping
      Dim n As Integer = e.SortInfo.Length
      If n = 0 Then
            e.Cancel = True
      End If
      
      Dim c As Integer = e.SortInfo(n - 1).Index  'model index
      Dim ss As FarPoint.Win.Spread.FpSpread = sender
      Dim dm As FarPoint.Win.Spread.Model.DefaultSheetDataModel
      If TypeOf (ss.ActiveSheet.Models.Data) Is FarPoint.Win.Spread.Model.DefaultSheetDataModel Then
            dm = ss.ActiveSheet.Models.Data
      Else
            dm = CType(ss.ActiveSheet.Models.Data, FarPoint.Win.Spread.Model.GroupDataModel).TargetModel
      End If
      
      c = dm.GetDataColumnFromModelColumn(c)
      If dm.GetDataView().Table.Columns(c).DataType.Equals(GetType(DateTime)) Then
            If dm.GetDataView().Table.Columns(c).Caption.IndexOf("Birth") >= 0 Then
                  e.GroupComparer = New MyGroupComparer(True)
            Else
                  e.GroupComparer = New MyGroupComparer(False)
            End If
      End If
End Sub
See Also

Reference

GroupingEventArgs Class
GroupingEventArgs Members