Once we got a requirement to display certain media library items in our page. We have certain controls like DataTreeView in Sitecore which can be extended based on our requirement.
<DataContext ID="TreeviewDataContext" Root=”{3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1}” DataViewName=”Master” /> <DataTreeview ID="Treeview" DataContext="TreeviewDataContext" Root="true"> </DataTreeview>
But we faced some challenges in extending DataTreeView.
Another simple and easily extendable solution would be Telerik’s RadTreeView and Sitecore.Resources.ImageBuilder API.
<telerik:RadTreeView ID="contentTree" runat="server" OnNodeDataBound="contentTree_NodeDataBound" ItemType="Sitecore.Data.Items.Item"> </telerik:RadTreeView>
protected void contentTree_NodeDataBound(object sender, RadTreeNodeEventArgs e) { UpdateTree(e.Node); } private void UpdateTree(RadTreeNode treeNode) { Item currentItem = (Item)treeNode.DataItem; //Binding Icon and Name of Sitecore Item HtmlGenericControl nodeContainer = new HtmlGenericControl("div"); ImageBuilder imageBuilder = new ImageBuilder() { Height = 16, Src = currentItem.Appearance.Icon, Width = 16 }; nodeContainer.InnerHtml = imageBuilder.ToString() + currentItem.Name; treeNode.Controls.Add(nodeContainer); //Binding Child Items foreach (Item childItem in currentItem.Children) { RadTreeNode currentNode = new RadTreeNode() { DataItem = childItem }; UpdateTree(currentNode); treeNode.Nodes.Add(currentNode); } treeNode.DataBind(); }
Hope this will save you some time, if you are looking out for more customization. Otherwise DataTreeView will help.
Originally Posted at: https://www.nttdatasitecore.com/Blog/2017/February/Rendering-Sitecore-Content-Tree