作成日: 2021/06/04 最終更新日: 2021/06/04
文書種別
使用方法
詳細
Footer行の集計値に対して、Styles.Footer.Formatプロパティを用いて以下のように書式を指定しても、有効になりません。
フッター行のセルの値はString型であるためで、現時点ではこれは仕様上の動作となります。
書式化された形で表示させるには、オーナー描画を利用し、セル値を数値に変換して書式を適用しこれを文字列として設定してください。
以下に、1~2列のフッターに"N2"書式を設定するためのコードを記載します。
※事前に、設計画面で以下の設定を行っておきます。
C1FlexGridのFootersプロパティを展開します。
(1) そのFixedプロパティをTrueに設定します。
(2) 次いで、DescriptionsCaptionの右の…をクリックし、以下を設定します。
・FooterDescriptionメンバーを1個追加
・そのAggregatesコレクションの右の…をクリック
・AggregateDefinisionメンバーを2個追加
・それらのAggregateプロパティを「Sum」に、Columnを「1」または「2」に設定
◎サンプルコード(VB)
c1FlexGrid1.Styles.Footer.Format = "N2";
フッター行のセルの値はString型であるためで、現時点ではこれは仕様上の動作となります。
書式化された形で表示させるには、オーナー描画を利用し、セル値を数値に変換して書式を適用しこれを文字列として設定してください。
以下に、1~2列のフッターに"N2"書式を設定するためのコードを記載します。
※事前に、設計画面で以下の設定を行っておきます。
C1FlexGridのFootersプロパティを展開します。
(1) そのFixedプロパティをTrueに設定します。
(2) 次いで、DescriptionsCaptionの右の…をクリックし、以下を設定します。
・FooterDescriptionメンバーを1個追加
・そのAggregatesコレクションの右の…をクリック
・AggregateDefinisionメンバーを2個追加
・それらのAggregateプロパティを「Sum」に、Columnを「1」または「2」に設定
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データの設定
C1FlexGrid1.AutoGenerateColumns = False ' データ連結時に、グリッド側で設定した列の書式を有効にします
C1FlexGrid1.Cols.Count = 3
C1FlexGrid1.Cols(1).DataType = GetType(System.Double)
C1FlexGrid1.Cols(1).Format = "N2"
C1FlexGrid1.Cols(1).Name = "A"
C1FlexGrid1.Cols(1).Caption = "A"
C1FlexGrid1.Cols(2).DataType = GetType(System.Double)
C1FlexGrid1.Cols(2).Format = "N2"
C1FlexGrid1.Cols(2).Name = "B"
C1FlexGrid1.Cols(2).Caption = "B"
Dim dt As DataTable = New DataTable
dt.Columns.Add("A", GetType(System.Double))
dt.Columns.Add("B", GetType(System.Double))
Dim dtRow1 As DataRow = dt.NewRow
dtRow1("A") = 1000
dtRow1("B") = 10000
dt.Rows.Add(dtRow1)
Dim dtRow2 As DataRow = dt.NewRow
dtRow2("A") = 2000
dtRow2("B") = 20000
dt.Rows.Add(dtRow2)
C1FlexGrid1.DataSource = dt
' オーナー描画の利用
C1FlexGrid1.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw
End Sub
Private Sub C1FlexGrid1_OwnerDrawCell(sender As Object, e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs) Handles C1FlexGrid1.OwnerDrawCell
If ((e.Col >= 1) And (e.Row = C1FlexGrid1.Rows.Count - 1)) Then
If (C1FlexGrid1(e.Row, e.Col) IsNot Nothing) Then
e.Text = $"{Convert.ToDecimal(C1FlexGrid1(e.Row, e.Col)):N2}"
End If
End If
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// データの設定
c1FlexGrid1.AutoGenerateColumns = false; // データ連結時に、グリッド側で設定した列の書式を有効にします
c1FlexGrid1.Cols.Count = 3;
c1FlexGrid1.Cols[1].DataType = typeof(double);
c1FlexGrid1.Cols[1].Format = "N2";
c1FlexGrid1.Cols[1].Name = "A";
c1FlexGrid1.Cols[1].Caption = "A";
c1FlexGrid1.Cols[2].DataType = typeof(double);
c1FlexGrid1.Cols[2].Format = "N2";
c1FlexGrid1.Cols[2].Name = "B";
c1FlexGrid1.Cols[2].Caption = "B";
DataTable dt = new DataTable();
dt.Columns.Add("A", typeof(double));
dt.Columns.Add("B", typeof(double));
DataRow dtRow1 = dt.NewRow();
dtRow1["A"] = 1000;
dtRow1["B"] = 10000;
dt.Rows.Add(dtRow1);
DataRow dtRow2 = dt.NewRow();
dtRow2["A"] = 2000;
dtRow2["B"] = 20000;
dt.Rows.Add(dtRow2);
c1FlexGrid1.DataSource = dt;
// オーナー描画の利用
c1FlexGrid1.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw;
}
private void c1FlexGrid1_OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e)
{
if (e.Col >= 1 && e.Row == c1FlexGrid1.Rows.Count - 1)
{
if (c1FlexGrid1[e.Row, e.Col] != null)
{
e.Text = $"{Convert.ToDecimal(c1FlexGrid1[e.Row, e.Col]):N2}";
}
}
}