作成日: 2023/06/16 最終更新日: 2023/06/16
文書種別
使用方法
詳細
※以下の手法は、ComponentOne 2022Jv3(ver. 4.5.20223.584)以降でのみご利用いただけます。
FlexPivot for WinForms ver. 4.5.20223.584で、グリッド上のコンテキストメニューで「詳細の表示」をクリックすると発生する「ShowDetails」イベントが導入されました。これを利用することで、「詳細ビュー」のリストでの列の並び順をカスタマイズすることができます。
手順としては、
(1) ShowDetailsイベントにて、最初に既定の「詳細ビュー」の動作をキャンセルします。
(2) セル情報を表示するためのC1FlexPivotGridを取得します。
(3) 新しいC1FlexGridを作成して、C1FlexPivotGridのスタイルやデータをコピーします。
(4) C1FlexGridにて、Moveメソッドを用いて列を入れ替えます。
例) detail.Cols.Move(4, 3)
(5) 既定の詳細ビューの代わりに、このC1FlexGridを追加した新規フォームを表示します。
以下に、製品収録のCustomColumnsサンプル※で、「詳細ビュー」の3列目と4列目を入れ替える例を紹介します。サンプルプロジェクトにFlexPivotGrid_ShowDetailsイベントを追加し、下記コードを設定して、動作をご確認下さい。
※以下の場所にインストールされます。
C:\Users\<アカウント名>\Documents\ComponentOne Samples\WinForms\v4.5.2\FlexPivot\CS\CustomColumns

◎サンプルコード(VB)
FlexPivot for WinForms ver. 4.5.20223.584で、グリッド上のコンテキストメニューで「詳細の表示」をクリックすると発生する「ShowDetails」イベントが導入されました。これを利用することで、「詳細ビュー」のリストでの列の並び順をカスタマイズすることができます。
手順としては、
(1) ShowDetailsイベントにて、最初に既定の「詳細ビュー」の動作をキャンセルします。
(2) セル情報を表示するためのC1FlexPivotGridを取得します。
(3) 新しいC1FlexGridを作成して、C1FlexPivotGridのスタイルやデータをコピーします。
(4) C1FlexGridにて、Moveメソッドを用いて列を入れ替えます。
例) detail.Cols.Move(4, 3)
(5) 既定の詳細ビューの代わりに、このC1FlexGridを追加した新規フォームを表示します。
以下に、製品収録のCustomColumnsサンプル※で、「詳細ビュー」の3列目と4列目を入れ替える例を紹介します。サンプルプロジェクトにFlexPivotGrid_ShowDetailsイベントを追加し、下記コードを設定して、動作をご確認下さい。
※以下の場所にインストールされます。
C:\Users\<アカウント名>\Documents\ComponentOne Samples\WinForms\v4.5.2\FlexPivot\CS\CustomColumns
◎サンプルコード(VB)
AddHandler _c1FlexPivotPage.FlexPivotGrid.ShowDetails, AddressOf FlexPivotGrid_ShowDetails
・・・(途中省略)・・・
Private Sub FlexPivotGrid_ShowDetails(sender As Object, e As RowColEventArgs)
'既定の動作のキャンセル
e.Cancel = True
'詳細ビューを取得
Dim pivotGrid = CType(sender, C1FlexPivotGrid)
Dim dt = pivotGrid.GetDetail(e.Row, e.Col)
If dt.Rows.Count = 0 Then Return
'グリッドのカスタマイズ
Dim detail = New C1FlexGrid With {
.Font = Font,
.VisualStyle = pivotGrid.VisualStyle,
.DataSource = dt,
.Dock = DockStyle.Fill,
.AllowEditing = False,
.AutoClipboard = True,
.ClipboardCopyMode = ClipboardCopyModeEnum.DataAndColumnHeaders
}
detail.Cols(0).Width = detail.Rows(0).HeightDisplay
'列の順序の入れ替え
detail.Cols.Move(4, 3)
'新規フォームを表示
Dim Form = New Form()
Form.Width = 2 * Form.Height
Form.StartPosition = FormStartPosition.CenterParent
Form.Text = String.Format(Localization.Strings.DetailView, dt.Rows.Count)
Form.ShowIcon = False
Form.Controls.Add(detail)
Form.ShowDialog(Me)
End Sub
◎サンプルコード(C#)
_c1FlexPivotPage.FlexPivotGrid.ShowDetails += FlexPivotGrid_ShowDetails;
・・・(途中省略)・・・
private void FlexPivotGrid_ShowDetails(object sender, RowColEventArgs e)
{
//既定の動作をキャンセル
e.Cancel = true;
// 詳細ビューを取得
var pivotGrid = (C1FlexPivotGrid)sender;
var dt = pivotGrid.GetDetail(e.Row, e.Col);
if (dt.Rows.Count == 0)
return;
//グリッドのカスタマイズ
var detail = new C1FlexGrid()
{
Font = Font,
VisualStyle = pivotGrid.VisualStyle,
DataSource = dt,
Dock = DockStyle.Fill,
AllowEditing = false,
AutoClipboard = true,
ClipboardCopyMode = ClipboardCopyModeEnum.DataAndColumnHeaders
};
detail.Cols[0].Width = detail.Rows[0].HeightDisplay;
//列の順序を入れ替え
detail.Cols.Move(4, 3);
//新規フォームを表示
var Form = new Form();
Form.Width = 2 * Form.Height;
Form.StartPosition = FormStartPosition.CenterParent;
Form.Text = string.Format(C1.Win.FlexPivot.Localization.Strings.DetailView, dt.Rows.Count);
Form.ShowIcon = false;
Form.Controls.Add(detail);
Form.ShowDialog(this);
}