C#遞歸生成HTML樹,C#遞歸生成xml樹

C#遞歸生成HTML樹node

 public StringBuilder str = new StringBuilder();   //定義一個字符串ide

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> \n");
//str.Append("<a data='RoleListList.aspx?id=" + dr[i].ID + "&type=Del' onclick='del(this)' >刪除</a> \n");
//調用自身迭代
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> \n");
//str.Append("<a data='RoleListList.aspx?id=" + dr[i].ID + "&type=Del' onclick='del(this)' >刪除</a> \n");
//調用自身迭代
this.get_navigation_childs(oldData, dr[i].Code);
str.Append("</li>");
if (i == (dr.Count() - 1))
{
str.Append("</ul>");
}
}
}
}

 
View Code

C#遞歸生成XML樹ui

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

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

//執行遞歸,添加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);
}code

        /// <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
相關文章
相關標籤/搜索