如何用程序控制TreeView2.0的展开与折叠??
我可以通过程序找到某个节点。
如果这个节点是父结点,那么这个节点直接展开,如果找到的是叶节点,那么把该叶节点的父节点展开。
疑问。如果展开某个节点的话,那么该节点的各级父节点是不是都要显示的展开?
多谢!
------解决方案--------------------UP
------解决方案--------------------protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
TreeNodeCollection ts = null;
if (e.Node.Parent == null)
{
ts = ((TreeView)sender).Nodes;
}
else
ts = e.Node.Parent.ChildNodes;
foreach (TreeNode node in ts)
{
if (node != e.Node)
{
node.Collapse();
}
}
}
------解决方案--------------------private void Expanded(TreeNode pnode)
{
if (pnode.ChildNodes.Count > 0)
{
pnode.SelectAction = TreeNodeSelectAction.None;
foreach (TreeNode node in pnode.ChildNodes)
{
Expanded(node);
}
}
}
在Page_Load这样调用:
if(!IsPostBack)
{
foreach(TreeNode node in this.TreeViewControl.Nodes)
{
Expanded(node);
}
}
//TreeViewControl是你页面上的treeview
------解决方案--------------------上面写错一行
把TreeNodeSelectAction.None 换成 TreeNodeSelectAction.Expand
------解决方案--------------------private void Expanded(TreeNode pnode,string value)
{
if(pnode.Value==value)
{
if (pnode.ChildNodes.Count > 0)
{
pnode.SelectAction = TreeNodeSelectAction.None;
foreach (TreeNode node in pnode.ChildNodes)
{
Expanded(node);
}
}
}
}
------解决方案--------------------private void Expanded(TreeNode pnode,string value)
{
if(pnode.Value==value)
{
if (pnode.ChildNodes.Count > 0)
{
pnode.Expanded();
foreach (TreeNode node in pnode.ChildNodes)
{
Expanded(node);
}
}
}
}
------解决方案--------------------递归绑定treeview 判断每个节点的ID值是否等于传入的ID值,相等,就Expanded();