作成日: 2026/01/14 最終更新日: 2026/01/14
文書種別
不具合
状況
回避方法あり
詳細
TrueDBGrid レイアウトを xml ファイルから読み込み、階層構造を定義したデータを設定します。
その状態で、SetDataBindingメソッドの HoldFields パラメータに 'True'を設定し、設計時のレイアウトを保持しながらデータを表示しようとすると、子テーブルの値が表示されません。
(「+」 ボタンを押下しても、小テーブルのデータが表示されません。)
※HoldFields 引数:設計時のレイアウトを保持する場合は true
その状態で、SetDataBindingメソッドの HoldFields パラメータに 'True'を設定し、設計時のレイアウトを保持しながらデータを表示しようとすると、子テーブルの値が表示されません。
(「+」 ボタンを押下しても、小テーブルのデータが表示されません。)
※HoldFields 引数:設計時のレイアウトを保持する場合は true
回避方法
SetDataBindingメソッドの HoldFields 引数をFalseにしてデータバインドを実行したのち、手動でレイアウトを再設定してください。
(設定コードの例:抜粋、VBのみ)
' XMLファイルからレイアウトの読み込み
C1TrueDBGrid1.LoadLayout("../../../OwnerMemoGrid.xml")
' 回避策:SetDataBindingメソッドの引数を Falseに設定
' 1. データバインド前の列情報をバックアップ(非連結列含む)
Dim backupCols As New List(Of C1DisplayColumn)
For Each originalCol As C1DisplayColumn In C1TrueDBGrid1.Splits(0).DisplayColumns
backupCols.Add(originalCol)
Next
' 2. データバインド実行
' holdFields = False で実行(この時点で非連結列は削除される)
C1TrueDBGrid1.SetDataBinding(ds, "tbl_Owner_Memo", False)
'C1TrueDBGrid1.SetDataBinding(ds, "tbl_Owner_Memo", True)
' 3. 連結列の設定復元 ---
For Each targetCol As C1DisplayColumn In C1TrueDBGrid1.Splits(0).DisplayColumns
Console.WriteLine($"連結列復元: {targetCol.DataColumn.Caption}")
' バックアップから対応する列を検索(DataField + Level で一致判定)
Dim backup = backupCols.Find(
Function(dc)
Return dc.DataColumn.DataField = targetCol.DataColumn.DataField AndAlso
dc.DataColumn.Level = targetCol.DataColumn.Level
End Function)
If backup Is Nothing Then
' 対応するバックアップが見つからない場合は非表示
targetCol.Visible = False
Else
' バックアップ情報から列設定を復元
With targetCol
.DataColumn.Caption = backup.Name
.DataColumn.FilterWatermark = backup.DataColumn.FilterWatermark
.GroupHeaderStyle = backup.GroupHeaderStyle
.HeadingStyle = backup.HeadingStyle
.Style = backup.Style
.Button = backup.Button
.ButtonText = backup.ButtonText
.Visible = backup.Visible
.Width = backup.Width
End With
End If
Next
' 4. 非連結列の復元
' バックアップから非連結列(DataFieldが空)を抽出
Dim unboundCols = backupCols.Where(
Function(dc) String.IsNullOrEmpty(dc.DataColumn.DataField)
).ToList()
' 非連結列を再追加・復元
For Each unboundCol In unboundCols
Console.WriteLine($"非連結列復元: {unboundCol.DataColumn.Caption}")
' C1DataColumnを追加
C1TrueDBGrid1.Columns.Add(
New C1DataColumn(unboundCol.DataColumn.Caption, GetType(String)) With {
.Level = unboundCol.DataColumn.Level
})
' DisplayColumnの表示設定を復元
With C1TrueDBGrid1.Splits(0).DisplayColumns(unboundCol.DataColumn.Caption)
.Button = unboundCol.Button
.ButtonText = unboundCol.ButtonText
.Visible = unboundCol.Visible
.Width = unboundCol.Width
End With
Next