首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从XtraTreeList.TreeList中的节点中检索数据?

如何从XtraTreeList.TreeList中的节点中检索数据?
EN

Stack Overflow用户
提问于 2013-03-21 15:12:46
回答 1查看 5.4K关注 0票数 2

我正在使用XtraTreeList.TreeList来显示分层数据。数据存储在实现DevExpress.XtraTreeList.TreeList.IVirtualTreeListData.的自定义业务对象中

当"Name“列的数据显示正常时,代码如下:

代码语言:javascript
复制
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事件:

代码语言:javascript
复制
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。似乎节点填充了一次对应于列的数据,然后不再使用业务对象(嗯,也许数据也被设置了,但在我的例子中没有)。

如果有任何见解,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-21 15:29:04

如果您有Node,则可以使用treeControl.GetDataRecordByNode(e.Node)获取底层DataSource

在您的示例中,它将如下所示:

代码语言:javascript
复制
private void BoundTree_CustomDrawNodeImages(object sender, DevExpress.XtraTreeList.CustomDrawNodeImagesEventArgs e)
{
    var myType = (MyType)BoundTree.GetDataRecordByNode(e.Node);
    e.StateImageIndex = myType.ImageIndex ?? -1 
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15541503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档