我正在使用XtraTreeList.TreeList来显示分层数据。数据存储在实现DevExpress.XtraTreeList.TreeList.IVirtualTreeListData.的自定义业务对象中
当"Name“列的数据显示正常时,代码如下:
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)从节点检索数据,但在执行时,根本不会调用IVirtualTreeListData.VirtualTreeGetCellValue。似乎节点填充了一次对应于列的数据,然后不再使用业务对象(嗯,也许数据也被设置了,但在我的例子中没有)。
如果有任何见解,我将不胜感激。
发布于 2013-03-21 15:29:04
如果您有Node,则可以使用treeControl.GetDataRecordByNode(e.Node)获取底层DataSource
在您的示例中,它将如下所示:
private void BoundTree_CustomDrawNodeImages(object sender, DevExpress.XtraTreeList.CustomDrawNodeImagesEventArgs e)
{
var myType = (MyType)BoundTree.GetDataRecordByNode(e.Node);
e.StateImageIndex = myType.ImageIndex ?? -1
}https://stackoverflow.com/questions/15541503
复制相似问题