首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 如何从某个子节点遍历父,直到treeview的根节点,并获得各节点值 [无满意答案结贴,结贴人:totoz]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • totoz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-20 14:37:12 楼主
    ROOT 
          ROOT1 
              ROOT1-1 
          ROOT2 
              ROOT2-1 
              ROOT2-2 
              ROOT2-3 
          ROOT3 
              ROOT3-1 
    如上树

    从ROOT3-1节点遍历这一节点的父,以及父的父,直到TreeView的根节点ROOT   

    然后取出各节点的值形成:ROOT - ROOT3 - ROOT3-1

    这个遍历应该咋写?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ojekleen
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 14:43:571楼 得分:0
    treenode node=root3-2;
    while(node.parent!=null)
    {
      //....操作
      node=node.parent;
    }
    //手写,试试,有误请见谅
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yagebu1983
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:00:042楼 得分:0
    引用 1 楼 ojekleen 的回复:
    treenode node=root3-2;
    while(node.parent!=null)
    {
      //....操作
      node=node.parent;
    }
    //手写,试试,有误请见谅

    正解!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yagebu1983
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:01:283楼 得分:0
    如果你的节点存在数据库中,也可以用sql自定义函数来写!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liutengt
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:12:414楼 得分:0
    递归
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • totoz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:15:055楼 得分:0
    THANKS

    我刚用DEPHT判断也试了下

    if (node.Parent.Depth == 0)
            {
                list.Add(node.Parent.Text);
                list.Reverse();
                foreach (object obj in list)
                {
                    buparent.Append(obj.ToString()+"—");
                }
            }
            else
            {
                list.Add(node.Parent.Text);
                GetParentText(node.Parent);
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dzswej
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:18:026楼 得分:0
    给你参考下
    无限分级的
    public void InitCatalogTreeView(TreeView tv)
            {
                DataSet ds = GetCategorys();
                if (ds == null) return;
                if (ds.Tables.Count <= 0) return;
                DataTable dt = ds.Tables[0];

                tv.Nodes.Clear();    ///清空树的所有节点
                DataRow[] rowList = dt.Select("fid='0'");
                if (rowList.Length < 1) return;
                ///创建根节点
                for (int i = 0; i < rowList.Length; i++)
                {
                    TreeNode root = new TreeNode();
                    ///设置根节点属性
                    root.Text = rowList[i]["catname"].ToString();           
                    ///设置根节点的value值
                    root.Value = rowList[i]["catid"].ToString();
                    //root.Target = "Product";
                    root.NavigateUrl = "catxg.aspx?catid=" + root.Value;
                    root.Expanded = true;

                    ///添加根节点
                    tv.Nodes.Add(root);

                    ///创建其他节点
                    CreateChildNode(root, dt, "Product", "catxg.aspx?catid=");

                }
            }

            private void CreateChildNode(TreeNode parentNode, DataTable dt, string target, string url)
            {
                ///选择数据时,添加了排序表达式OrderBy
                DataRow[] rowList = dt.Select("fid='" + parentNode.Value
                    + "'", "catid");
                foreach (DataRow row in rowList)
                {  ///创建新节点
                    TreeNode node = new TreeNode();
                    ///设置节点的属性
                    node.Text = row["catname"].ToString();
                    node.Value = row["catid"].ToString();
                  // node.Target = target;
                    node.NavigateUrl = url + node.Value;
                    node.Expanded = false;
                    parentNode.ChildNodes.Add(node);
                    ///递归调用,创建其他节点
                    CreateChildNode(node, dt, target, url);
              if (node.ChildNodes.Count > 0)
                    {
                      node.SelectAction = TreeNodeSelectAction.None;
                  }
                }
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • blackhero
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:18:117楼 得分:0
    递归
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dzswej
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:19:218楼 得分:0
    private void BindPageData()
        {
            sccat category = new sccat();
            category.InitCatalogTreeView2(tvCategory);
        }

    页面中调用


    <asp:TreeView runat="server" ID="tvCategory" ImageSet="Msdn" NodeIndent="10" >
        <ParentNodeStyle Font-Bold="true" />
        <HoverNodeStyle BackColor="#CCCCCC" BorderColor="#888888" BorderStyle="Solid" Font-Underline="True" />
        <SelectedNodeStyle BackColor="White" BorderColor="#888888" BorderStyle="Solid" BorderWidth="1px"
            Font-Underline="False" HorizontalPadding="3px" VerticalPadding="1px" />
        <NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px"
            NodeSpacing="1px" VerticalPadding="2px" />
         
        </asp:TreeView>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shuerself
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-08 10:19:099楼 得分:0
    谢谢
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved