作成日: 2025/12/09 最終更新日: 2025/12/09
文書種別
不具合
発生環境
.NET 8
状況
回避方法あり
詳細
C1FlexGridBandedView で、 子バンド を設定した状態で、 ColSpan プロパティの値を1以外に設定すると、 バンドの編集 ビューで例外エラーが発生し、赤いバツ印が表示されます。
例えば、FlexGridExplore製品サンプルの「ColumnBandsLayout.cs」において、デザイナにあるc1FlexGridBandedView1.Bandsオブジェクトを右クリックし「バンドの編集」を選択、バンドの編集画面を表示すると例外エラーが発生し、赤いバツ印が表示されます。
※ChildBand を設定していない場合や、ColSpan プロパティ が すべて0 や1になっているときは発生しません。
例えば、FlexGridExplore製品サンプルの「ColumnBandsLayout.cs」において、デザイナにあるc1FlexGridBandedView1.Bandsオブジェクトを右クリックし「バンドの編集」を選択、バンドの編集画面を表示すると例外エラーが発生し、赤いバツ印が表示されます。
※ChildBand を設定していない場合や、ColSpan プロパティ が すべて0 や1になっているときは発生しません。
回避方法
列バンドのデザイナでは編集できないため、コードでColSpanなどの列バンドを設定してください。
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' サンプルデータを設定します。
Dim table As DataTable = GetDummyDataTable()
C1FlexGrid1.DataSource = table
Dim band1 As New C1.Win.FlexGrid.Band()
band1.Caption = "Product Info"
band1.Name = "Product Info"
band1.ColSpan = 3
Dim band2 As New C1.Win.FlexGrid.Band()
band2.Caption = "ID"
band2.Name = "ID"
band2.ColSpan = 2
Dim band3 As New C1.Win.FlexGrid.Band()
band3.Caption = "Name"
band3.Name = "Name"
Dim band4 As New C1.Win.FlexGrid.Band()
band4.Caption = "Price"
band4.Name = "Price"
Dim band5 As New C1.Win.FlexGrid.Band()
band5.Caption = "Quantity"
band5.Name = "Quantity"
band1.Children.Add(band2)
band1.Children.Add(band3)
band1.Children.Add(band4)
band1.Children.Add(band5)
C1FlexGridBandedView1.Bands.Add(band1)
C1FlexGridBandedView1.FlexGrid = C1FlexGrid1
End Sub
Private Function GetDummyDataTable() As DataTable
Dim dt As New DataTable()
' 列定義
dt.Columns.Add("ID", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Price", GetType(Decimal))
dt.Columns.Add("Quantity", GetType(Integer))
' 価格はランダムに設定する
Dim rand As New Random()
' サンプルデータを200件追加
For Each i As Integer In Enumerable.Range(1, 200)
Dim price As Decimal = rand.Next(100, 551) ' 100~550の範囲でランダム
dt.Rows.Add(i, $"製品 {i}", price, 100 + i * 5)
Next
Return dt
End Function◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// サンプルデータを設定します。
DataTable table = GetDummyDataTable();
c1FlexGrid1.DataSource = table;
C1.Win.FlexGrid.Band band1 = new C1.Win.FlexGrid.Band();
band1.Caption = "Product Info";
band1.Name = "Product Info";
band1.ColSpan = 3;
C1.Win.FlexGrid.Band band2 = new C1.Win.FlexGrid.Band();
band2.Caption = "ID";
band2.Name = "ID";
band2.ColSpan = 2;
C1.Win.FlexGrid.Band band3 = new C1.Win.FlexGrid.Band();
band3.Caption = "Name";
band3.Name = "Name";
C1.Win.FlexGrid.Band band4 = new C1.Win.FlexGrid.Band();
band4.Caption = "Price";
band4.Name = "Price";
C1.Win.FlexGrid.Band band5 = new C1.Win.FlexGrid.Band();
band5.Caption = "Quantity";
band5.Name = "Quantity";
band1.Children.Add(band2);
band1.Children.Add(band3);
band1.Children.Add(band4);
band1.Children.Add(band5);
c1FlexGridBandedView1.Bands.Add(band1);
c1FlexGridBandedView1.FlexGrid = c1FlexGrid1;
}
private DataTable GetDummyDataTable()
{
var dt = new DataTable();
// 列定義
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Columns.Add("Quantity", typeof(int));
// 価格はランダムに設定する
var rand = new Random();
// サンプルデータを200件追加
foreach (var i in Enumerable.Range(1, 200))
{
decimal price = rand.Next(100, 551); // 100~550の範囲でランダム
dt.Rows.Add(i, $"製品 {i}", price, 100 + i * 5);
}
return dt;
}