zoukankan      html  css  js  c++  java
  • TreeView初始化,返回节点值的方法(转)收藏

    初始化树程序
    ivate void intiTree(TreeNodeCollection Nds,int parentId)
      {
       DataSet ds=new DataSet();
       ds=eharbor.DataAccess.dataSet(sql0);//我有一个单独的数据访问类eharbor.DataAccess,
    DataView dv=new DataView();
       TreeNode tmpNd;
       int intId;
       dv.Table=ds.Tables[0];
          dv.RowFilter="atc_sup_id="+parentId+"";break;
       
       foreach(DataRowView drv in dv)
       { 
        tmpNd=new TreeNode();
          tmpNd.ID=drv["atc_id"].ToString();
          tmpNd.Text=drv["atc_name"].ToString();
          tmpNd.ImageUrl="adimg/filder.gif";
           intId=Convert.ToInt32(tmpNd.ID);
        Nds.Add(tmpNd);
        intiTree(Nds[Nds.Count-1].Nodes,intId);
       }
      
      }
    方便的实现了读入树,但实现返回节点值却费了我好大功夫,去网上搜相关内容,也没找到,但最后还是让我给蒙出来了,原来TreeView的SelectedNodeIndex返回的根节点值是0,1,2这样的,但子节点是0.1,0.0.1,这样的,这样怎么能采用TreeView.Nodes[SelectedNodeIndex].Text返回呢?我束手无策。去论坛发帖求助也没能解决,傍晚的时候,我突然想到是不是这样,子节点TreeVIew.Nodes[i].Nodes[i]......,一试果然,我高兴又无奈,就这样一个小而简单的问题费了我一整天功夫,下面是我用循环的方法返回节点值的程序
    private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
     
      {
         string[] aa=e.NewNode.Split('.');
        int[] incount=new int[20];// 分类不能超过20级,这里算是个缺陷吧,要么就要再循环一遍重新计一次数。
        int i=0;
        TreeNode temp=new TreeNode();;
        foreach(string s in aa)
        {
         incount[i]=Convert.ToInt32(s);
         i++;
        }
        temp=this.TreeView1.Nodes[incount[0]];
        for(int j=1;j<i;j++)
        {   
         temp=temp.Nodes[incount[j]];
     }
     this.tx_a.Text=temp.Text;



    另外一种超级简单的方法也可以实现:
    Treeview1.GetNodeFromIndex(Treeview1.SelectedNodeIndex).Text
  • 相关阅读:
    nyoj58 最少步数
    oj2787 算24
    一位ACMer过来人的心得
    hdu递推公式水题
    nyoj20 吝啬的国度
    hdu1421 搬寝室
    全排列生成算法:next_permutation
    hdu2544 最短路
    poj1691 Painting A Board
    hdu1274 展开字符串
  • 原文地址:https://www.cnblogs.com/xh831213/p/330166.html
Copyright © 2011-2022 走看看