XtraTreeList.TreeListを使用して階層データを表示しています。データは、DevExpress.XtraTreeList.TreeList.IVirtualTreeListDataを実装するカスタムビジネスオブジェクトに保存されます。
列「名前」のデータは正常に表示されますが、次のコードで取得されます。
public void VirtualTreeGetCellValue(DevExpress.XtraTreeList.VirtualTreeGetCellValueInfo info)
{
if (info.Column.FieldName == "Name")
info.CellData = root.providers[provGroup.Key];
if (info.Column.FieldName == "ImageIndex")
info.CellData = imageIndex;
}
ノードに適切な画像インデックスを提供するのに苦労しました。
簡単に言えば、どうやって提供すればいいのかわかりません。TreeListのImageIndexFieldNameを"ImageIndex"に設定し、CustomDrawNodeImagesイベントを次のように処理してみました。
void BoundTree_CustomDrawNodeImages(object sender, DevExpress.XtraTreeList.CustomDrawNodeImagesEventArgs e)
{
e.StateImageIndex = e.StateImageIndex = (int)(e.Node.GetValue("ImageIndex")??-1);
e.Handled = false;
}
ただし、これでは結果は得られません。
私がやりたいのは、ノードに対応するIVirtualTreeListDataを実装するオブジェクトを取得することですが、それをどのように行うことができますか?ドキュメントでは、Node.GetValue(column)を使用してノードからデータを取得することをお勧めしますが、実行時にIVirtualTreeListData.VirtualTreeGetCellValueは呼び出されません。ノードが列に対応するデータで一度満たされ、その後ビジネスオブジェクトが使用されなくなったようです(データも設定されている可能性がありますが、私の場合はそうではありません)。
私はどんな洞察にも感謝します。