Copyright © GrapeCity inc. All rights reserved.
True DBGrid for WinForms
カスタム設定で行をグループ化
データ表示テクニック > 列のグループ化 > GroupIntervalEnum 列挙体による列のグループ化 > カスタム設定で行をグループ化

このトピックでは、C1TrueDBGridGroupIntervalEnum.Custom メンバを使用する方法を説明します。

以下の手順を実行します。

  1. 新しい .NET プロジェクトを開始します。
  2. ツールボックスを開き、 C1TrueDBGrid コントロールをフォームに追加します。
  3. C1TrueDBGrid タスクメニューを開き、[データソースの選択]ボックスのドロップダウン矢印をクリックして、[プロジェクトデータソースの追加]をクリックします。
  4. アダプタの[データソース構成ウィザード]で、NWind.mdb への接続を選択するか、このデータベースへの新しい接続を作成します。
  5. ウィザードの[データベースオブジェクトの選択]ページで、[商品]テーブル内のすべてのフィールドを選択し、[データセット名]ボックスに「商品」と入力して、ウィザードを終了します。
  6. 次のコードを Form_Load イベントに追加します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Me.ProductsTableAdapter.Fill(Me.Products._Products)
    

    C# コードの書き方

    C#
    コードのコピー
    this.productsTableAdapter.Fill(this.Products._Products);
    
  7. DataView プロパティをDataViewEnum.GroupByに設定します

    デザイナの場合

    C1TrueDBGrid タスクメニューで、[データレイアウト]のドロップダウンから GroupBy を選択します。


    コードの場合

    次のコードを Form_Load イベントに追加します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Me.C1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.GroupBy
    

    C# コードの書き方

    C#
    コードのコピー
    this.c1TrueDBGrid1.DataView = C1.Win.C1TrueDBGrid.DataViewEnum.GroupBy;
    
  8. C1TrueDBGrid タスクメニューから[デザイナ]を選択し、[C1TrueDBGrid デザイナ]を開きます。
  9. 右ペインにある UnitPrice 列をクリックして選択します。

    この列はツールバーのドロップダウンリストから UnitPrice をクリックしても選択できます。


  10. Interval プロパティを GroupIntervalEnum.Customに設定します。

    デザイナの場合

    C1TrueDBGrid デザイナの左ペインで、Interval プロパティを指定して custom に設定します。


    コードの場合

    次のコードを Form_Load イベントに追加します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    ' グリッドの GroupInfo.Interval を Custom に設定します。
    Me.C1TrueDBGrid1.Columns("UnitPrice").GroupInfo.Interval = C1.Win.C1TrueDBGrid.GroupIntervalEnum.Custom
    

    C# コードの書き方

    C#
    コードのコピー
    // グリッドの GroupInfo.Interval を Custom に設定します。
    this.c1TrueDBGrid1.Columns["UnitPrice"].GroupInfo.Interval = C1.Win.C1TrueDBGrid.GroupIntervalEnum.Custom;
    
  11. UnitPrice 列の NumberFormat プロパティを Currency に設定します。

    デザイナの場合

    C1TrueDBGrid デザイナ]の左ペインで、NumberFormat プロパティを指定して Currency に設定します。

    コードの場合

    次のコードを Form_Load イベントに追加します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    ' UnitPrice 列を通貨表示に設定します。
    Me.C1TrueDBGrid1.Columns("UnitPrice").NumberFormat = "Currency"
    

    C# コードの書き方

    C#
    コードのコピー
    // UnitPrice 列を通貨表示に設定します。
    this.c1TrueDBGrid1.Columns["UnitPrice"].NumberFormat = "Currency";
    
    /
  12. 最後に、UnitPrice 列によってグループ化した後この列を表示状態にするには、ColumnVisible プロパティを True に設定します。

    デザイナの場合

    C1TrueDBGrid デザイナ]の左ペインで、ColumnVisible プロパティを指定して True に設定します。


    コードの場合

    次のコードを Form_Load イベントに追加します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    ' グループ化中の UnitPrice 列を表示状態にします。
    Me.C1TrueDBGrid1.Columns("UnitPrice").GroupInfo.ColumnVisible = True
    

    C# コードの書き方

    C#
    コードのコピー
    // グループ化中の UnitPrice 列を表示状態にします。
    this.c1TrueDBGrid1.Columns["UnitPrice"].GroupInfo.ColumnVisible = true;
    
  13. 次のコードをGroupInterval イベントに追加します

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    ' 現在のグリッドセルから値を少数として取得します。
    Dim p As Decimal = CType(Me.C1TrueDBGrid1(e.Row, e.Col.DataColumn.DataField), Decimal)
     
    ' カスタムグループ値を割り当てます.
    If p > 0 And p < 10 Then
        e.Value = "$0 - $9.99"
    ElseIf p >= 10 And p < 20 Then
        e.Value = "$10.00 - $19.99"
    ElseIf p >= 20 And p < 40 Then
        e.Value = "$20.00 - $39.99"
    ElseIf p >= 40 And p < 60 Then
        e.Value = "$40.00 - $59.99"
    ElseIf p >= 60 Then
        e.Value = "$60 And Greater"
    End If 
    

    C# コードの書き方

    C#
    コードのコピー
    // 現在のグリッドセルから値を少数として取得します。
    decimal p = ((decimal)this.c1TrueDBGrid1(e.Row,e.Col.DataColumn.DataField));
     
    // カスタムグループ値を割り当てます.
    If (p > 0 && p < 10) 
    {
        e.Value = "$0 - $9.99";
    }
    else if (p >= 10 && p < 20)
    {
        e.Value = "$10.00 - $19.99";
    }
    else if (p >= 20 && p < 40)
    {
        e.Value = "$20.00 ? $39.99";
    }
    else if (p >= 40 && p < 60)
    {
        e.Value = "$40.00 - $59.99";
    }
    else if (p >= 60)
    {
        e.Value ? "$60 and Greater";
    } 
    

この例では、UnitPrice 列がカスタム設定でソートされます。

関連トピック