RadOrgChart supports grouping of items. The default (also called "simple") binding gives the ability to bind from self-referenced data. But when groups are required to represent a hierarchy, a single data source wouldn't be a good solution.
RadOrgChart supports binding to hierarchical data including groups as logical entities. This is done with Group-Enabled Binding.
Group-Enabled Binding requires 2 separate data sources - Node Datasource and Item Datasource.
The idea behind this solution is to have as small repetition of data as possible. The Node Datasource contains self-referenced data, so the hiearchical structure can be created. All the data about the items is contained in the Item Datasource. The connection between the two is the NodeID field/column/property of the entities of the Item Datasource.
Here is a sample of a DB design:
And this is how one can bind RadOrgChart to the data:
<telerik:RadOrgChart RenderMode="Lightweight" runat="server" ID="RadOrgChart1"> <GroupEnabledBinding> <NodeBindingSettings DataSourceID="NodesDataSource" DataFieldID="ID" DataFieldParentID="ParentID" /> <GroupItemBindingSettings DataSourceID="ItemsDataSource" DataFieldID="ID" DataFieldNodeID="NodeID" DataTextField="Text" /> </GroupEnabledBinding> </telerik:RadOrgChart> <asp:SqlDataSource ID="ItemsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:RadOrgChartConnectionString %>" SelectCommand="SELECT * FROM [Items]"></asp:SqlDataSource> <asp:SqlDataSource ID="NodesDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:RadOrgChartConnectionString %>" SelectCommand="SELECT * FROM [Nodes]"></asp:SqlDataSource>