Rendering Sitecore Content Tree

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

Leave a Reply

Your email address will not be published. Required fields are marked *