作成日: 2025/MM/10/03; 最終更新日: 2025/10/03
文書種別
使用方法
詳細
グリッドビューで、例えば「タスク名」列をマージして見やすくするには、グリッドビューの内部コントロールであるC1FlexGridを取得し、そのAllowMergingプロパティを「Custom」に設定して、MergedRangesに任意の範囲を指定します。
以下に簡単な設定コードを記載します。
※このサンプルコードでは、カスタム列(「スケジュール名」)を追加して、マージ範囲に対する詳細行を表示しています。
(ご注意)
この方法は、通常は公開されていないGanttViewの内部コントロールを使用しているため、コードのご利用に当たってはお客様サイドで十分に動作を確認してください。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Imports C1.Win.C1GanttView
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'タスクモード列を非表示にします。
C1GanttView1.Columns(0).Visible = False
' カスタム列の追加
Dim cc As New CustomFieldColumn()
cc.Caption = "スケジュール名"
cc.DataType = GetType(String)
cc.Name = "CustomColumn01"
cc.Width = 65
cc.Visible = True
C1GanttView1.Columns.Add(cc)
' データの設定
C1GanttView1.Tasks.Clear()
Dim task0 = New C1.Win.C1GanttView.Task()
task0.Name = "設計工程"
task0.Start = DateTime.Today()
task0.Duration = 4
task0.SetFieldValue("CustomColumn01", "要件定義")
C1GanttView1.Tasks.Add(task0)
Dim task1 = New C1.Win.C1GanttView.Task()
task1.Name = "設計工程"
task1.Start = DateTime.Today().AddDays(1)
task1.Duration = 7
task1.SetFieldValue("CustomColumn01", "プログラミング")
C1GanttView1.Tasks.Add(task1)
Dim task2 = New C1.Win.C1GanttView.Task()
task2.Name = "テスト工程"
task2.Start = DateTime.Today().AddDays(14)
task2.Duration = 5
task2.SetFieldValue("CustomColumn01", "単体テスト")
C1GanttView1.Tasks.Add(task2)
Dim task3 = New C1.Win.C1GanttView.Task()
task3.Name = "テスト工程"
task3.Start = DateTime.Today().AddDays(15)
task3.Duration = 5
task3.SetFieldValue("CustomColumn01", "総合テスト")
C1GanttView1.Tasks.Add(task3)
'タスク列のマージ
Dim gridView = DirectCast(C1GanttView1.Controls(2), C1FlexGrid) 'C1FlexGridを取得
gridView.AllowMerging = AllowMergingEnum.Custom
gridView.Cols("タスク名").AllowMerging = True
gridView.MergedRanges.Add(gridView.GetCellRange(1, 1, 2, 1))
gridView.MergedRanges.Add(gridView.GetCellRange(3, 1, 4, 1))
End Sub
◎サンプルコード(C#)
using C1.Win.C1GanttView;
using C1.Win.C1FlexGrid;
private void Form1_Load(object sender, EventArgs e)
{
// タスクモード列を非表示にします
c1GanttView1.Columns[0].Visible = false;
// カスタム列の追加
CustomFieldColumn cc = new CustomFieldColumn();
cc.Caption = "スケジュール名";
cc.DataType = typeof(string);
cc.Name = "CustomColumn01";
cc.Width = 65;
cc.Visible = true;
c1GanttView1.Columns.Add(cc);
// データの設定
c1GanttView1.Tasks.Clear();
var task0 = new C1.Win.C1GanttView.Task();
task0.Name = "設計工程";
task0.Start = DateTime.Today;
task0.Duration = 4;
task0.SetFieldValue("CustomColumn01", "要件定義");
c1GanttView1.Tasks.Add(task0);
var task1 = new C1.Win.C1GanttView.Task();
task1.Name = "設計工程";
task1.Start = DateTime.Today.AddDays(1);
task1.Duration = 7;
task1.SetFieldValue("CustomColumn01", "プログラミング");
c1GanttView1.Tasks.Add(task1);
var task2 = new C1.Win.C1GanttView.Task();
task2.Name = "テスト工程";
task2.Start = DateTime.Today.AddDays(14);
task2.Duration = 5;
task2.SetFieldValue("CustomColumn01", "単体テスト");
c1GanttView1.Tasks.Add(task2);
var task3 = new C1.Win.C1GanttView.Task();
task3.Name = "テスト工程";
task3.Start = DateTime.Today.AddDays(15);
task3.Duration = 5;
task3.SetFieldValue("CustomColumn01", "総合テスト");
c1GanttView1.Tasks.Add(task3);
// タスク列のマージ
var gridView = (C1FlexGrid)c1GanttView1.Controls[2]; //C1FlexGridを取得
gridView.AllowMerging = AllowMergingEnum.Custom;
gridView.Cols["タスク名"].AllowMerging = true;
gridView.MergedRanges.Add(gridView.GetCellRange(1, 1, 2, 1));
gridView.MergedRanges.Add(gridView.GetCellRange(3, 1, 4, 1));
}