日期:2014-05-18  浏览次数:20971 次

treeview子节点事件无法触发
C# code
       
private void loadtree()
        {
             TreeView1.Nodes.Clear();
  
            TreeView1.Nodes.Add(new TreeNode("系统说明", "About", ""));
            TreeView1.Nodes.Add(new TreeNode("--------","xian"));
            
            TreeNode tn = new TreeNode("aaa", "yuyue");
            tn.ChildNodes.Add(new TreeNode("bbb", "Registered", "", "~/A_Registered.aspx", ""));
            tn.ChildNodes.Add(new TreeNode("ccc", "RegistSelect", "", "~/S_RegistSelect.aspx", ""));
            //tn.ImageUrl = "~/images/menu_bt.jpg";
            TreeView1.Nodes.Add(tn);

}
这是我加载treeview的代码。根节点是aaa,子节点是bbb和ccc.
但是我点击根节点aaa可以触发TreeView1_SelectedNodeChanged事件,可是点击bbb和ccc确无法触发事件,求解惑。
下面是我事件的代码,点击根节点,除了被选择的节点展开,其它的节点收缩。
可是点击根节点可以达到效果,点击任意子节点根本就无法触发事件。
我断点了,不触发事件
C# code

protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
        {
            int a=this.TreeView1.CheckedNodes.Count;
            int b = this.TreeView1.Nodes.Count;
            int c = this.TreeView1.SelectedNode.ChildNodes.Count;
            //int d = this.TreeView1.SelectedNode.Parent.ChildNodes.Count;

            for (int i = 0; i < this.TreeView1.Nodes.Count; i++)
            {
                if (this.TreeView1.SelectedValue == this.TreeView1.Nodes[i].Value)
                {
                    this.TreeView1.SelectedNode.Expanded = true;
                }
                else
                {
                    for (int j = 0; j < this.TreeView1.SelectedNode.ChildNodes.Count; j++)
                    {
                        this.TreeView1.SelectedNode.ChildNodes[j].CollapseAll();
                    }
                    //this.TreeView1.SelectedNode.Parent.Expanded = true;
                    this.TreeView1.SelectedNode.Expanded = true;
                }
            }



------解决方案--------------------
treeView1_NodeMouseClick 這個事件裏面寫
------解决方案--------------------
你可以试一下 用 treeView1_AfterSelect 是treeView的“在选定内容后发生”的事件里 写
------解决方案--------------------
LZ:你想表达的意思是不是这样:

点击一个节点,就展开起所有子节点,收缩其他节点?
------解决方案--------------------
LZ应该要写的应该是treeView1_AfterSelect事件。treeView1_SelectedNodeChanged是当选择的节点改变时才触发该事件,你的bbb和ccc都是aaa的子节点,所以你选择aaa节点后再点击bbb或ccc其实都没有改变选择的节点。
------解决方案--------------------
如果是我说的那样,非常简单可以实现:
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
foreach(TreeNode node in treeView1.Nodes)
{
if (e.Node.Equals(node))
node.ExpandAll();
else
node.Collapse();
}
}
------解决方案--------------------
Node1.Text = Row["DeptName"].ToString();
Node1.Expanded = true;
Node1.NavigateUrl = "www.baidu.com";
TvwCatalog.Nodes.Add(Node1);

分开写在添加。 不用什么事件。 只要
NavigateUrl 给值了就行
------解决方案--------------------
5楼的不是说了吗,用treeView1_AfterSelect事件