PowerTools SPREAD for ASP.NET 8.0J > 開発者の手引き > データ操作 > グループ化 > コードによるグループ化 |
グループデータモデルオブジェクトを使用して、コードによるグループ化およびその解除を行うことができます。グループデータモデルオブジェクトは、GroupDataModel クラスを使用して生成し、SheetView クラスのDataModel プロパティから参照されます。
コードにより、グループ化を実行するには、データモデルからグループデータモデルオブジェクトを取得し、GroupDataModel クラスのGroup メソッドを実行します。また、このときデータの並べ替え順を設定するSortInfo クラスを作成し、Group メソッドのパラメータに指定します。
次のサンプルコードは、ボタンのクリックでグループ化を実行します。
protected void Button1_Click(object sender, EventArgs e) { // クライアント側の変更を確定します FpSpread1.SaveChanges(); // グループ化を行います FarPoint.Web.Spread.Model.GroupDataModel gm = new FarPoint.Web.Spread.Model.GroupDataModel(FpSpread1.ActiveSheetView.DataModel); FarPoint.Web.Spread.SortInfo[] sort = new FarPoint.Web.Spread.SortInfo[1]; sort[0] = new FarPoint.Web.Spread.SortInfo(1, true); gm.Group(sort); FpSpread1.ActiveSheetView.DataModel = gm; }
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click ' クライアント側の変更を確定します FpSpread1.SaveChanges() ' グループ化を行います Dim gm As New FarPoint.Web.Spread.Model.GroupDataModel(FpSpread1.ActiveSheetView.DataModel) Dim sort(0) As FarPoint.Web.Spread.SortInfo sort(0) = New FarPoint.Web.Spread.SortInfo(1, True) gm.Group(sort) FpSpread1.ActiveSheetView.DataModel = gm End Sub
グループデータモデルのGroupDataModel クラスのTargetModel プロパティを使用して、グループ化されたデータモデルをオリジナルのデータモデルに戻すことでグループ化を解除できます。
次のサンプルコードは、ボタンのクリックによりグループ化を解除します。なお、この方法はユーザー操作により実行されたグループに対しても有効です。
protected void Button1_Click(object sender, EventArgs e) { // クライアント側の変更を確定します FpSpread1.SaveChanges(); // グループ化を解除します FarPoint.Web.Spread.Model.GroupDataModel gm; gm = (FarPoint.Web.Spread.Model.GroupDataModel)FpSpread1.ActiveSheetView.DataModel; FpSpread1.ActiveSheetView.DataModel = gm.TargetModel; }
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click ' クライアント側の変更を確定します FpSpread1.SaveChanges() ' グループ化を解除します Dim gm As FarPoint.Web.Spread.Model.GroupDataModel gm = CType(FpSpread1.ActiveSheetView.DataModel, FarPoint.Web.Spread.Model.GroupDataModel) FpSpread1.ActiveSheetView.DataModel = gm.TargetModel End Sub
シートに対してグループ化を有効にすると、このシート(スプレッドシートコンポーネント)に対して個別のターゲットグループデータモデルが使用可能になります。このグループデータモデルはフラットな構造であり、階層は含まれません。これにはグループヘッダのほか、グループ化固有の他の表示データが含まれます。このモデルの下位は、行データが格納されるターゲットデータモデルです。
グループ化は、独自の比較基準を指定してカスタマイズできます。 たとえば、年に関する情報を保持する列の場合は、10年単位のカスタムグループを作成できます。 Groupingイベントの発生時には、独自のIComparer(「MyComparer」などと名前を設定)を渡すことができます。グループヘッダに表示される内容を確認するには、このグループのTextプロパティを設定します。