jstree的数据后台生成

jstree的数据后台生成

jstree在前台的HTML格式如:

<div id="demo1" class="demo" style="height:100px;">
    <ul>
        <li id="phtml_1">
            <a href="#">Root node 1</a>
            <ul>
                <li id="phtml_2">
                    <a href="#">Child node 1</a>
                </li>
                <li id="phtml_3">
                    <a href="#">Child node 2</a>
                </li>
            </ul>
        </li>
        <li id="phtml_4">
            <a href="#">Root node 2</a>
        </li>
    </ul>
</div>

后台生成这种格式的数据:(无限级,递归)

private string GetTreeString(int pid)
       {
           IEnumerable<Model.TreesModel> TreesModelList= TreesBLL.GetList();
           return "<ul>" + AddTreeNodeString(0, "所有栏目", customClassList) + "</ul>";
       }

       private string AddTreeNodeString(int nodeId, string nodeName,  IEnumerable<Model.TreesModel> list)
       {
           string nodeString = "";

           //找出List 中以nodeId为ParentID的节点
           IEnumerable<Model.TreesModel> childNodes = list.Where(i => i.PId== nodeId).OrderBy(i => i.SortNumber);

           int nodeCount = childNodes.Count();

           if (nodeCount == 0)
           {
               //如果没找到子节点,返回<li></li>
               nodeString = "<li><a href='#'>" + nodeName + "</a></li>";
           }
           else
           {
               //如果找到子节点,增加<ul>
               nodeString = "<li><a href='#'>" + nodeName + "</a><ul>";

               //按子节点循环,每次掉自己增加一个节点的nodeString
               foreach (var item in childNodes)
               {
                   nodeString += AddTreeNodeString(item.Id, item.Name, list);
               }
               //增加</ul>
               nodeString += "</ul></li>";
           }

           return nodeString;
       }

原文地址:https://www.cnblogs.com/suizhikuo/p/2882131.html