注册 登录
编程论坛 ASP.NET技术论坛

treeview 单击事件在SelectedNodeChanged里怎么获取

cctvkmn 发布于 2010-03-14 11:48, 2964 次点击
我用 treeview 递归获取了数据库的全部节点

根节点
   父节点
      子节点
      子节点
   父节点
      子节点
   父节点
      子节点
      子节点

我想问下我在SelectedNodeChanged这个事件怎么判断 根节点呢?

因为在递归时候已经指定了url,点根节点和父节点时候总会跳到url路径

我想判断下如果是根节点或父节点的话,就什么也不做。

只有子节点时候才会跳转url,怎么去遍历它们?谢谢!
2 回复
#2
冰彩虹2010-03-14 12:30
如果某一TreeNode有子节点,该TreeNode就不要设置它的URL,这样不行吗
#3
cctvkmn2010-03-14 12:55

这是源码:

DataSet ds = null;
  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      string sql = "select * from proclass";
       ds = KennyDataOp.GetDataSet(sql);
       AddTree(0, (TreeNode)null, "Product.aspx?cid=");
     }
   }
  public void AddTree(int ParentID, TreeNode pNode,string urls)
  {
     DataView dvTree = new DataView(ds.Tables[0]);
    //过滤ParentID,得到当前的所有子节点
     dvTree.RowFilter = "[parentid] = " + ParentID;
    foreach (DataRowView Row in dvTree)
    {
       TreeNode Node = new TreeNode();
      if (pNode == null)
      {    //添加根节点
         Node.Text = Row["name"].ToString();
         Node.NavigateUrl = urls + Row["id"].ToString();
        this.TreeView1.Nodes.Add(Node);
         Node.Expanded = true;
         AddTree(Int32.Parse(Row["id"].ToString()), Node, urls); //再次递归
       }
      else
      {  //添加当前节点的子节点
         Node.Text = Row["name"].ToString();
         Node.NavigateUrl = urls + Row["id"].ToString();
         pNode.ChildNodes.Add(Node);
         Node.Expanded = true;
         AddTree(Int32.Parse(Row["id"].ToString()), Node, urls); //再次递归
       }
     }
   }

我也想不传url 原来我这样写的,但是不知道这个个urls怎么取到后来就直接写:
Node.NavigateUrl = Row["FuncUrl"].ToString() +Row["id"].ToString();

如果按照上面写递归参数urls 怎么取值?
谢谢
1