Put linq to sql results into hierarchical structure for using in a un-ordered list ( for jquery tree )

后端 未结 4 698
孤独总比滥情好
孤独总比滥情好 2021-02-11 01:55

I have 5 tables in a L2S Classes dbml : Global >> Categories >> Sub-Category >> Item >> Item Data. I want to be able to navigate from the Global table down a tree like structure

4条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-02-11 02:45

    Since you are dealing different types in this case, you will have to implement a common interface on each of them to make the code generic. The basic approach would be to create an interface that includes any needed properties (e.g. DisplayText, ActionURL, etc) then iterate over the collection recursively.

    Here's a rough example:

     public interface IDataItem
        {
            string DisplayText { get; }
            string ActionUrl { get;  }
            bool HasChildren { get; }
            IEnumerable GetChildren();
        }
    
     public void CreateTree(HtmlTextWriter writer, IEnumerable collection)
        {
            writer.WriteFullBeginTag("ul");
            foreach (var data in collection)
            {
                writer.WriteFullBeginTag("li");
                writer.WriteBeginTag("a");
                writer.WriteAttribute("href",data.ActionUrl);
                writer.Write(HtmlTextWriter.TagRightChar);
                writer.Write(data.DisplayText);
                writer.WriteEndTag("a");
                if(data.HasChildren)
                    CreateTree(writer, data.GetChildren());
                writer.WriteEndTag("li");
            }
            writer.WriteEndTag("ul");
        }
    

    You will have to implement the interface on each of your types that you want included in the treeview. The just pass in the collection of the top level type and the method above will walk down the hierarchy creating the needed nested list.

提交回复
热议问题