Spread ASP.NET 6.0 Product Documentation
GroupComparer Property
See Also  Example Send Feedback
FarPoint.Web.Spread Assembly > FarPoint.Web.Spread.Model Namespace > GroupDataModel Class : GroupComparer Property


Glossary Item Box

Gets the group comparer.

Syntax

Visual Basic (Declaration) 
Public ReadOnly Property GroupComparer As IComparer
Visual Basic (Usage)Copy Code
Dim instance As GroupDataModel
Dim value As IComparer
 
value = instance.GroupComparer
C# 
public IComparer GroupComparer {get;}

Property Value

IComparer object containing the comparer

Example

This example returns the value from the specified index.
C#Copy Code
private int GetYear(DateTime value)
{
return value.Year;
}

private int GetDecade(DateTime value)
{
int x = 0;
x = value.Year % 10;
x = value.Year - x;
return x;
}

<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;
}
}
}

void FpSpread1_Grouping(object sender, GroupingEventArgs e)
{
int c = e.SortInfo.Index;
FarPoint.Web.Spread.FpSpread ss = (FarPoint.Web.Spread.FpSpread)sender;
FarPoint.Web.Spread.Model.DefaultSheetDataModel dm;
if ((ss.ActiveSheetView.DataModel) is FarPoint.Web.Spread.Model.DefaultSheetDataModel)
{
    dm = (FarPoint.Web.Spread.Model.DefaultSheetDataModel)ss.ActiveSheetView.DataModel;
}
else
{
dm = (FarPoint.Web.Spread.Model.DefaultSheetDataModel)((FarPoint.Web.Spread.Model.GroupDataModel)ss.ActiveSheetView.DataModel).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);
}
}
}

void FpSpread1_Grouped(object sender, EventArgs e)
{
FarPoint.Web.Spread.FpSpread ss = (FarPoint.Web.Spread.FpSpread)sender;
FarPoint.Web.Spread.Model.GroupDataModel gm;
if ((ss.ActiveSheetView.DataModel) is FarPoint.Web.Spread.Model.GroupDataModel)
{
gm = (FarPoint.Web.Spread.Model.GroupDataModel)ss.ActiveSheetView.DataModel;
if ((gm.GroupComparer) is MyGroupComparer1)
{
int i;
for (i = 0; i <= ss.ActiveSheetView.RowCount - 1; i++)
{
if (gm.IsGroup(i))
{
FarPoint.Web.Spread.Model.Group g;
g = gm.GetGroup(i);
if ((g.Rows[0]) is int & !(gm.IsEditable(i, g.Column))) 
{
string s = ss.ActiveSheetView.GetColumnLabel(0, ss.ActiveSheetView.GetViewColumnFromModelColumn(g.Column));
if (s.IndexOf("Birth") >= 0)
{
g.Text = s + ": " + GetDecade((DateTime)gm.TargetModel.GetValue((int)g.Rows[0], g.Column)) + "s";
}
else
{
g.Text = s + ": " + GetYear((DateTime)gm.TargetModel.GetValue((int)g.Rows[0], g.Column));
}
}
}
}
}
}
}
Visual BasicCopy Code
Private Function GetYear(ByVal value As DateTime) As Integer
Return value.Year
End Function

Private Function GetDecade(ByVal value As DateTime) As Integer
Dim x As Integer = 0
x = value.Year Mod 10
x = value.Year - x
Return x
End Function

<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

Protected Sub FpSpread1_Grouped(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.Grouped
Dim ss As FarPoint.Web.Spread.FpSpread = sender
Dim gm As FarPoint.Web.Spread.Model.GroupDataModel
If TypeOf (ss.ActiveSheetView.DataModel) Is FarPoint.Web.Spread.Model.GroupDataModel Then
gm = ss.ActiveSheetView.DataModel
If TypeOf (gm.GroupComparer) Is MyGroupComparer Then
Dim i As Integer
For i = 0 To ss.ActiveSheetView.RowCount - 1
If gm.IsGroup(i) Then
Dim g As FarPoint.Web.Spread.Model.Group
g = gm.GetGroup(i)
If TypeOf (g.Rows(0)) Is Integer And Not gm.IsEditable(i, g.Column) Is Integer Then
Dim s As String = ss.ActiveSheetView.GetColumnLabel(0, ss.ActiveSheetView.GetViewColumnFromModelColumn(g.Column))
If s.IndexOf("Birth") >= 0 Then
g.Text = s & ": " & GetDecade(gm.TargetModel.GetValue(g.Rows(0), g.Column)) & "s"
Else
g.Text = s & ": " & GetYear(gm.TargetModel.GetValue(g.Rows(0), g.Column))
End If
End If
End If
Next
End If
End If
End Sub

Protected Sub FpSpread1_Grouping(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.GroupingEventArgs) Handles FpSpread1.Grouping
Dim c As Integer = e.SortInfo.Index
Dim ss As FarPoint.Web.Spread.FpSpread = sender
Dim dm As FarPoint.Web.Spread.Model.DefaultSheetDataModel
If TypeOf (ss.ActiveSheetView.DataModel) Is FarPoint.Web.Spread.Model.DefaultSheetDataModel Then
dm = ss.ActiveSheetView.DataModel
Else
dm = CType(ss.ActiveSheetView.DataModel, FarPoint.Web.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 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, Windows Vista, Windows Server 2008 family

See Also

© 2002-2012 GrapeCity, Inc. All Rights Reserved.