我放了一个TreeView控件.各节点的NavigateUrl未设置,在
SelectedNodeChanged中编写代码.能过TreeView1.SelectedNode获取点击的节点的值并执行相关操作.
问题:当树的同一父节点下有几个同层次的节点时,点击其它节点,其选中的都是第一个子节点,怎么办??如图:  A
  |_B
  | |
  C E 
  | | 
  | F
  D  如果单击C或D,SelectedNode取得选中的值是A,如果单击E或F,SelectedNode或得的值是B,单击A获得A值,单击B获得B值.怎么办?
请多多指教,谢谢  

解决方案 »

  1.   

    附代码:
    protected void Page_Init(object sender, EventArgs e)
        {
            TreeView tV = (TreeView)Page.Master.FindControl("TrvOrg");
            if (tV != null)
                tV.SelectedNodeChanged += TrvChanged;
        }
    protected void TrvChanged(object sender, EventArgs e)
        {
           
            if (mvContent.ActiveViewIndex != 0)
                mvContent.ActiveViewIndex = 0;
            TreeView tV = (TreeView)Page.Master.FindControl("TrvOrg");
             if (tV != null)
             {             
                 if (tV.SelectedNode != null)                 
                     gvOrg.DataSource = HrSSystem.SSystem.GetOrgs(tV.SelectedNode.ToolTip);                         
                 else                 
                     gvOrg.DataSource = HrSSystem.SSystem.GetOrgs("");
                 gvOrg.DataBind();
                 gvOrg.Caption = tV.SelectedNode.Text + "-子机构列表";
                
             }
        }
     protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                  TreeView tV = (TreeView)Page.Master.FindControl("TrvOrg");
                 if (tV != null)
                     HrSSystem.SSystem.FillTreeOrgs(tV, HttpContext.Current.User.Identity.Name);
            }
        }
      

  2.   

    To S208ping就是在上面树中.就是在
    单击各节点时都触发事件:
    SelectedNodeChanged事件 
      在事件中加如 label1.text=TreeView1.selectedNode.text;当单击C或D触发事件时 label1.text获得的值是节点A的Text;(我想要的就是单击C得C的值,单击D得D的值)
    当单击E或F时~`      label1.text获得的值是节点B的Text; (同上)明白了没有?
      

  3.   


            protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
            {
                if (TreeView1.SelectedNode.Parent != null)
                    Response.Write(TreeView1.SelectedNode.Parent.ChildNodes[0].Value);
                else
                    Response.Write(TreeView1.Nodes[0].Value);
            }
      

  4.   

    lz,你的treenode.value是不是同一个值呀,呵呵
      

  5.   

    to ojlovecd 
    你明搞明白啊.我要的是点击什么就得什么值,现在是不论点击什么节点得到的是同层次的第一个节点的值
      

  6.   

    protected void TrvChanged(object sender, EventArgs e) 
        { 
          
            if (mvContent.ActiveViewIndex != 0) 
                mvContent.ActiveViewIndex = 0; 
            TreeView tV = (TreeView)Page.Master.FindControl("TrvOrg"); //这句改成TreeView tV = sender as TreeView;试试
            if (tV != null) 
            {            
                if (tV.SelectedNode != null)                
                    gvOrg.DataSource = HrSSystem.SSystem.GetOrgs(tV.SelectedNode.ToolTip);                        
                else                
                    gvOrg.DataSource = HrSSystem.SSystem.GetOrgs(""); 
                gvOrg.DataBind(); 
                gvOrg.Caption = tV.SelectedNode.Text + "-子机构列表"; 
                
            } 
        } 
      

  7.   

    终于搞明白啊.哈哈.回过头来看,原来jerry_hu说的太对了.哈
    可惜自己摸出来的搞了好久.谢谢大家
      

  8.   

    只有一句话,I 服了 YOU!!!