首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DevExpress TreeList增量搜索

DevExpress TreeList增量搜索
EN

Stack Overflow用户
提问于 2011-10-04 21:20:06
回答 2查看 2.9K关注 0票数 0

我需要在treelist中实现增量搜索。判断标准是节点名称包含特定字符串。我在这里的http://community.devexpress.com/forums/t/15735.aspx中找到了“您应该覆盖XtraTreeList.Handler.TreeListHandler.IncrementalSearchState类的FindNode方法”的建议。但我不明白如何实现这一点。

EN

回答 2

Stack Overflow用户

发布于 2012-05-28 08:50:20

一个简单的递归应该给出一个遍历整个树的解决方案。

代码语言:javascript
复制
private TreeListNode GetNodeByName(TreeListNodes prmNodes, String prmName)
{
   foreach (TreeListNode node in prmNodes)
   {
      // Assume the data is present in column 0.
      if (node[0].ToString().Contains(prmName, StringComparison.CurrentCultureIgnoreCase))
         return node;

      TreeListNode foundNode = GetNodeByName(node.Nodes, prmName);

      if (foundNode != null)
         return foundNode;
   }
   return null;
}
//---------------------------------------------------------------------------

现在,如果你做一个简单的调用,比如:

代码语言:javascript
复制
TreeListNode node = GetNodeByName (treeList.Nodes, "MyNodeName");

您将获得所需的节点。

票数 2
EN

Stack Overflow用户

发布于 2014-01-08 00:27:24

我想大概是这样的:

代码语言:javascript
复制
public class MyTreeList : DevExpress.XtraTreeList.TreeList
{

    protected override DevExpress.XtraTreeList.Handler.TreeListHandler CreateHandler()
    {
        return new MyHandler(this);
    }

    internal DevExpress.XtraTreeList.Handler.TreeListHandler GetHandler() { return this.Handler; }
}

public class MyHandler : DevExpress.XtraTreeList.Handler.TreeListHandler
{
    public MyHandler(TreeList tree) : base(tree) { }

    protected override TreeListControlState CreateState(TreeListState state)
    {
        if (state == TreeListState.IncrementalSearch && this.TreeList is MyTreeList)
            return new MyFinder((this.TreeList as MyTreeList).GetHandler());
        return base.CreateState(state);
    }
}

public class MyFinder : DevExpress.XtraTreeList.Handler.TreeListHandler.IncrementalSearchState
{
    public MyFinder(DevExpress.XtraTreeList.Handler.TreeListHandler handler) : base(handler) { }
    protected override TreeListNode FindNode(FindNodeArgs e)
    {
        ////////////////////////////////////
        ////////////////////////////////////
        ////////////////////////////////////
        return base.FindNode(e);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7648543

复制
相关文章

相似问题

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