我通过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);
}
}
}