Spread Windows Forms 6.0 Product Documentation
SortInfo Property
See Also  Example Support Options
FarPoint.Win.Spread Assembly > FarPoint.Win.Spread Namespace > GroupingEventArgs Class : SortInfo Property


Glossary Item Box

Gets the sorting information.

Syntax

Visual Basic (Declaration) 
Public ReadOnly Property SortInfo As SortInfo()
Visual Basic (Usage)Copy Code
Dim instance As GroupingEventArgs
Dim value() As SortInfo
 
value = instance.SortInfo
C# 
public SortInfo[] SortInfo {get;}

Property Value

SortInfo object containing the sorting information for the grouping

Example

C#Copy Code
[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);
            }
      }
}
Visual BasicCopy Code
[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

Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

© 2002-2012 ComponentOne, a division of GrapeCity. All Rights Reserved.