zoukankan      html  css  js  c++  java
  • C#递归生成HTML树,C#递归生成xml树

    C#递归生成HTML树

     public StringBuilder str = new StringBuilder();   //定义一个字符串

    private void get_navigation_childs(List<TableClass> oldData, string parent_id)
    {
    List<TableClass> dr = oldData.Where(x => x.PCode == parent_id).OrderBy(x => x.Kid).ToList();     //Code代表节点信息,PCode代表父级节点信息,PMMC代表节点名称
    bool isWrite = false; //是否输出开始标签
    for (int i = 0; i < dr.Count(); i++)
    {
    //如果是顶级导航
    if (parent_id == "")
    {
    str.Append("<ul>");
    str.Append("<li class='parent_li' >");
    
    str.Append("<span title='Collapse this branch'>");
    str.Append("<i class='icon-folder-open'></i>" + dr[i].PMMC + "</span> ");
    //str.Append("<a href='RoleListEdit.aspx?id=" + dr[i].ID + "&type=Edit'>编辑</a> 
    ");
    //str.Append("<a data='RoleListList.aspx?id=" + dr[i].ID + "&type=Del' onclick='del(this)' >删除</a> 
    ");
    //调用自身迭代
    this.get_navigation_childs(oldData, dr[i].Code);
    str.Append("</ul>");
    
    }
    else //下级导航
    {
    if (!isWrite)
    {
    isWrite = true;
    str.Append("<ul>");
    }
    str.Append("<li>");
    str.Append(" <span><i class='icon-leaf'></i>" + dr[i].PMMC + "</span>");
    //str.Append("<a href='RoleListEdit.aspx?id=" + dr[i].ID + "&type=Edit'>编辑</a> 
    ");
    //str.Append("<a data='RoleListList.aspx?id=" + dr[i].ID + "&type=Del' onclick='del(this)' >删除</a> 
    ");
    //调用自身迭代
    this.get_navigation_childs(oldData, dr[i].Code);
    str.Append("</li>");
    if (i == (dr.Count() - 1))
    {
    str.Append("</ul>");
    }
    }
    }
    }
    
     
    View Code

    C#递归生成XML树

    public void TestBuild(string Path)
    {
    DataTable dt = InitTable();

    XmlElement xe = xd.CreateElement("Datas");
    xd.AppendChild(xe);

    //执行递归,添加XML节点
    BTest(dt, xe);
    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<?xml version="1.0" encoding="utf-8"?>" + xd.OuterXml.ToString().Replace("/>", "></Item>"));
    doc.Save(Path);
    }

            /// <summary>
            /// 递归添加XML节点
            /// </summary>
            /// <param name="dt">数据源</param>
            /// <param name="node">当前节点</param>
            public void BTest(DataTable dt, XmlElement node)
            {
                XmlElement tmp;
    
                var list = from r in dt.AsEnumerable()
                           select r;
                if (node != null && node.Attributes["Code"] != null)
                {
                    list = from r in dt.AsEnumerable()
                           where r["PCode"].ToString().Equals(node.Attributes["Code"].Value)
                           select r;
                }
    
                foreach (DataRow row in list)
                {
                    if (!usedElement.Contains(row["Code"].ToString()))   
                    {
                        usedElement.Add(row["Code"].ToString());
                        tmp = xd.CreateElement("Item");
    
                        var a = tmp.NodeType;
                     
                        tmp.SetAttribute("Code", row["Code"].ToString());
                        tmp.SetAttribute("PCode", row["PCode"].ToString());
                        //tmp.InnerText = row["PMMC"].ToString();
    
                        node.AppendChild(tmp);
    
                        BTest(dt, tmp);
                    }
                }
            }
    View Code
  • 相关阅读:
    HTML颜色表
    SQL 语法参考手册
    色环[微软MSDN]
    网页配色方案及方法[网上配色文章集合
    驰骋工作流程引擎公文流程引擎图片演示VSTO技术
    工作流程引擎手机应用方寸之间尽在掌握。
    关于流程的退回与撤消
    驰骋.net工作流程引擎设计开发讲座: 工作流程类型模式
    驰骋工作流程引擎,工作流程管理系统,工作流程中间件, 支持日历面板,采用vsto技术处理公文类的流程流转。
    驰骋.net工作流程引擎,工作流程管理系统定时启动约定
  • 原文地址:https://www.cnblogs.com/-hao/p/9628425.html
Copyright © 2011-2022 走看看