TreeView返回节点值的方法


我在做一个文章管理系统的时候,想实现文章类无限分级,为方便呈现,就决定采用TreeView控件,所以需要将TreeView控件将数据库结合起来,动态读入节点,这一步我参照署名为gbvnis高手写的一段vb.net的程序修改成c#版,很快实现,他采用一个第归的方法,逐步读出每个节点,下面是我c#的初始化树程序
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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值