即时创建树视图。
public void CreateTreeView1(TableInfo[] items)
{
treeView1.TabStop = false;
TreeNodeCollection nodes = treeView1.Nodes;
for (int i = 0; i < items.Length; i++)
{
TreeNode newNode = new TreeNode( items[i].Schemaname+"."+items[i].Tablename);
newNode.Tag = items[i];
treeView1.Nodes.Add(newNode);
for (int j = 0; j < service.GibSpaltenNamen(items[i].Tablename).Length; j++)
{
newNode = new TreeNode(items[i].Columnname);
newNode.Tag = items[j];
treeView1.Nodes[i].Nodes.Add(newNode);
}
}
参数TableInfo []是一个对象数组,包含:schemaname,tablename,columnname,description。全部都充满了信息 但是,虽然创建TreeView不具备这种意义。 我希望这样:
感谢Janik
}
编辑:
public void CreateTreeView1(TableInfo[] items)
{
treeView1.TabStop = false;
TreeNodeCollection nodes = treeView1.Nodes;
foreach (TableInfo Tvalue in items)
{
TreeNode newTNode = new TreeNode(Tvalue.Schemaname + "." + Tvalue.Tablename);
newTNode.Tag = Tvalue;
treeView1.Nodes.Add(newTNode);
foreach (ColumnInfo Cvalue in Tvalue.Columns)
{
TreeNode newCNode = new TreeNode(Cvalue.Name);
newCNode.Tag = Cvalue;
newTNode.Nodes.Add(newCNode);
}
}
}
这是我的解决方案......
答案 0 :(得分:1)
假设TableInfo
看起来像这样:
class TableInfo
{
public string SchemaName { get; set; }
public string TableName { get; set; }
public string ColumnName { get; set; }
public string Description { get; set; }
}
您应该先SchemaName
和TableName
对其进行分组。然后,TreeView
的构建变得非常简单:
treeView1.BeginUpdate();
try
{
var nodes = items
.GroupBy(_ => string.Format("{0}.{1}", _.SchemaName, _.TableName))
.Select(_ => new TreeNode(
_.Key,
_.Select(info => new TreeNode(info.ColumnName)
{
Tag = info
})
.ToArray()))
.ToArray();
treeView1.Nodes.AddRange(nodes);
}
finally
{
treeView1.EndUpdate();
}
注意,我已经省略了顶级节点的Tag
初始化,因为它们是对节点进行分组。