使用重复键填充树视图

时间:2018-01-25 07:20:43

标签: c# winforms treeview infragistics

我在没有使用Infragistics Framework的ID或PARENTID的情况下创建了我的树视图。它运作得很好。

然而,有时子节点名称变得相同。哪个对我好。

这是我populatetreeview的代码。基本上为'Type'分组。哪个是根节点。然后使用“名称”

为该根节点添加子节点
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'
        }
    }
}

如何允许重复密钥?

1 个答案:

答案 0 :(得分:3)

您不能允许重复的密钥 根据{{​​3}}:

  

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

Key property documentation方法的文档显示了5次重载 Add他们接受两个字符串 - 第一个是键,另一个是文本 您应该使用此重载将节点添加到树中 您可以选择要设置密钥的任何方法,我认为对您当前代码影响最小的最简单方法是使用One作为密钥。 Guids几乎保证是独一无二的:

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); 
            }
        }
    }