我使用此代码将子节点添加到选定节点:
private void PopulateSubNodes(DataTable Dt, TreeNode RootNode)
{
RootNode.Nodes.Clear();
TreeNode Node;
foreach (DataRow Dr in Dt.Rows)
{
if (int.Parse(Dr[2].ToString()) > 0)
{
Node = RootNode.Nodes.Add(Dr[1] + " , " + Dr[2]);
}
else
{
Node = RootNode.Nodes.Add(Dr[1].ToString());
}
Node.Tag = Dr[0];
}
RootNode.Expand();
}
我知道节点的Id,Title和子计数。
在Dr [2]中,我检查每个孩子的子计数,如果它大于0,我想显示该节点的加号和减号,否则我不想。
我怎样才能做到这一点?
答案 0 :(得分:2)
如果你在逻辑上知道有孩子,但他们还没有被添加到树中,你需要添加一个节点。
最简单的方法是在检测到时使用占位符节点,并在展开节点时将其删除。
internal class EmptyTreeNode : TreeNode { }
private void PopulateSubModes(...)
{
// ...
if (hasChildren) node.Nodes.Add(new EmptyTreeNode());
// ...
}
private static void TreeView1OnBeforeExpand(object sender, TreeViewCancelEventArgs args)
{
// If this isn't one of our special nodes... abort.
if (args.Node.Nodes.Count == 0 || !(args.Node.Nodes[0] is EmptyTreeNode))
return;
args.Node.Nodes.Clear();
// -- Do whatever to REALLY populate it
args.Node.Nodes.Add( new TreeNode( "Weeeeeeeee" ) );
args.Node.Nodes.Add( new TreeNode( "Hooooooah!" ) );
}
答案 1 :(得分:-1)
如果节点没有子节点,则+/-符号不会显示
如果叶节点仍然显示+/-符号,请确保它没有空子节点。