这是数据源,有其他方法也行,但是不要保存到数据库和XML文档中。    public class TreeConfig
    {
        private TreeConfig() { }        public static string SystemSetting
        {
            get
            {
                return Sysconfig + "$" + Modelconfig + "$" + Groupconfig;
            }
        }
        private static string Sysconfig = @"系统配置,系统配置,Images/Icons/Sys.gif,@基础配置,基础配置,Images/Icons/Pow.gif,1.Aspx" +
            @"|后台访问限制,后台访问限制,Images/Icons/Wal.gif,2.Aspx|系统日志,系统日志,Images/Icons/Pag.gif,3.Aspx|系统环境,系统环境,Images/Icons/Sev.gif,1.Aspx";
        private static string Modelconfig = @"功能模块,功能模块,Images/Icons/Plg.gif,@模块管理,模块管理,Images/Icons/Icg.gif,a.Aspx" +
            @"|新增模块,新增模块,Images/Icons/Pgn.gif,B.Aspx";
        private static string Groupconfig = @"集群管理,集群管理,Images/Icons/Net.gif,@站点管理,站点管理,Images/Icons/Lnk.gif,e.aspx"+
            @"|新建站点,新建站点,Images/Icons/Wst.gif,f.aspx|栏目管理,栏目管理,Images/Icons/Ext.gif,f.aspx";
       
    }
要得到的结果图:

解决方案 »

  1.   

    我想的思路是 先用 $ 分割一次成个大块 再用 @ 分割出各大块的头节点, 然后各节点用,分割出各属性。不过递归的时候无法对数据源处理,造成死循环。求教了。下面是我的代码,没用。。string treesource = TreeSource.GetSource("syscfg");
                if(treesource != null)
                {
                    string[] str1 = treesource.Split('$');
                    for (int i = 0; i < str1.Length; i++)
                    {
                        string[] str2 = str1[i].Split('@');
                        if(str2.Length == 2)
                        {
                            for(int j = 0 ;j<2; j++)
                            {
                            string[] str3 = str2[j].Split(',');
                            if (str3.Length == 4)
                            {
                                
                                    if (dal.IsAuthorized(mguid, str3[1].ToString()))
                                    {
                                        TreeNode node = new TreeNode(str3[0].ToString(), "", str3[2].ToString());
                                        node.Expanded = true;
                                        if (str3[3].ToString() == "")
                                        {
                                            node.SelectAction = TreeNodeSelectAction.None;
                                        }
                                        else
                                        {
                                            node.NavigateUrl = str3[3].ToString();
                                        }
                                        TreeView1.Nodes.Add(node);
                                        Createtree(mguid, node);
                                    }
                                }
                                else
                                {
                                    if (dal.IsAuthorized(mguid, str3[1].ToString()))
                                    {
                                        TreeNode node = new TreeNode(str3[0].ToString(),"",str3[2].ToString());
                                        if (str3[3].ToString() == "")
                                        {
                                            node.SelectAction = TreeNodeSelectAction.None;
                                        }
                                        else
                                        {
                                            node.NavigateUrl = str3[3].ToString();
                                        }
                                        pnode.ChildNodes.Add(node);
                                        Createtree(mguid,node);
                                    }
                                }
                            }
                        }
                    }            
                }
      

  2.   

    新工作,,郁闷要我用vb.net
      

  3.   

      if(treesource != null)
                {
                    string[] str1 = treesource.Split('|');
                    
                    for (int i = 0; i < str1.Length; i++)
                    {
                        if(i==0)
                        {
                           string[] str2 = str1[i].Split('@');                    }
                         else
                        {
                            
                            string[] str3 = str1[j].Split(',');
                            if (str3.Length == 4)
                            {