使用重复键填充树视图



我通过Infragistics Framework创建了我的树视图,没有使用ID或PARENTID。效果很好。

但是,有时子节点名称会变得相同。这对我来说没关系。

这是我填充树视图的代码。基本上按"类型"分组。哪些是根节点。然后使用"名称"为该根节点添加子节点

private void populateTreeview(DataTable dt)
{
    var groups = dt.AsEnumerable().GroupBy(x => x.Field<string>("Type"));
    foreach (var group in groups)
    {
        UltraTreeNode node = utObjects.Nodes.Add(group.Key);
        foreach (string name in group.Select(x => x.Field<string>("Name")))
        {
            node.Nodes.Add(name); // Throws an error here : 'Key Already Exist'
        }
    }
}

如何允许重复密钥?

不允许重复键。
根据Key属性文档:

键在整个 UltraTree 控件中必须是唯一的。

Add方法的文档显示了 5 个重载。
其中一个接受两个字符串 - 第一个是键,另一个是文本。
应使用此重载将节点添加到树中。
您可以选择要设置键的任何方法,我认为对当前代码影响最小的最简单的方法是将Guid.NewGuid().ToString()用于键。Guid 实际上保证是独一无二的:

private void populateTreeview(DataTable dt)
    {
        var groups = dt.AsEnumerable().GroupBy(x => x.Field<string>("Type"));
        foreach (var group in groups)
        {
            UltraTreeNode node = utObjects.Nodes.Add(group.Key);
            foreach (string name in group.Select(x => x.Field<string>("Name")))
            {
                // Generates a unique key for each node.
                node.Nodes.Add(Guid.NewGuid().ToString(), name); 
            }
        }
    }

相关内容

  • 没有找到相关文章

最新更新