private static MvcHtmlString BindTreeEx <T1, T2>(ITreeNodeEx <T1, T2> treeModel, int layer) where T1 : ITreeNodeEx <T1, T2> where T2 : IName
        {
            StringBuilder sb = new StringBuilder();

            if (treeModel != null)
            {
                List <T1> list = treeModel.Children.ToList();


                if (layer == 0)
                {
                    sb.Append(string.Format("<ul onclick='{0}'>", "displayOrHide(event);"));
                }
                else
                {
                    if (HaveChildren(treeModel))
                    {
                        sb.Append(string.Format("<ul class='collapse' id='List{0}'>", treeModel.Id));
                    }
                    else
                    {
                        sb.Append("<ul>");
                    }
                }


                foreach (T1 item in list)
                {
                    bool haveChildren = HaveChildren(item);
                    if (!haveChildren)
                    {
                        sb.Append("<li>");
                    }
                    else
                    {
                        sb.Append("<li style='list-style-image: url(\"../Img/TreeIcon/open.png\");cursor: pointer;'>");
                    }

                    sb.Append(item.Name);
                    sb.Append("</li>");
                    sb.Append(BindTreeEx(item, layer + 1));
                }

                List <T2> leafs = treeModel.LeafNodes.ToList();
                foreach (T2 leaf in leafs)
                {
                    sb.Append("<li>");
                    sb.Append(leaf.Name);
                    sb.Append("</li>");
                }

                sb.Append("</ul>");
            }


            MvcHtmlString mstr = new MvcHtmlString(sb.ToString());

            return(mstr);
        }
Esempio n. 2
0
 public static bool HaveChildren <T1, T2>(ITreeNodeEx <T1, T2> item) where T1 : ITreeNodeEx <T1, T2> where T2 : IName
 {
     return((item.Children != null && item.Children.Count > 0) || (item.LeafNodes != null && item.LeafNodes.Count > 0));
 }
Esempio n. 3
0
 public static MvcHtmlString TreeEx <T1, T2>(this HtmlHelper html, ITreeNodeEx <T1, T2> treeModel) where T1 : ITreeNodeEx <T1, T2> where T2 : IName
 {
     return(BindTreeEx(treeModel, 0));
 }