public string BuildTree2(CmsPage page) { int viewMode = 1;//int.Parse(this.ViewModeCheckBoxList.SelectedValue); this.treeViewTemplate = base.GetSubTemplate("{TreeView}"); this.treeNodeTemplate = base.GetSubTemplate("{TreeNode}"); string tree = treeViewTemplate; string rootNodes = ""; string select = "SELECT DataGroup.ID, DataGroup.Name, DataGroup.FK_Parent_Group, DataGroup.CompletePath, "; string from = " FROM DataGroup "; if (!DataCollection.HasStaticLanguage && this.LanguageCode != "" && this.LanguageCode != Site.DefaultLanguage) { DataField titleField = DataField.GetFirst <DataField>("FK_DataCollection = '" + DataCollection.ID + "' AND MappingColumn='Title' AND type='group'"); if (titleField.IsMultiLanguageField) { select += "Lang.Title AS Title "; from += " JOIN DataGroupLanguage AS Lang ON DataGroup.ID = Lang.FK_DataGroup AND Lang.LanguageCode = '" + this.LanguageCode + "'"; } else { select += "DataGroup.Title "; } } else { select += "DataGroup.Title "; } string where = String.Format(" WHERE DataGroup.FK_DataCollection = '{0}' ", DataCollection.ID); string sort = getSort(DataCollection.DataGroupFields); //" ORDER BY DataGroup.OrderNumber"; string sql = select + from + where + sort; System.Data.DataTable allGroupsTable = DataBase.Get().GetDataTable(sql); string drillDownUrl = ""; string drillDownLink = ""; ModuleNavigationAction navigationActionDrillDown = this.GetNavigationActionByTagName("{DrillDownLink}"); if (navigationActionDrillDown != null) { drillDownUrl = navigationActionDrillDown.GetNavigationUrl(); drillDownLink = navigationActionDrillDown.CreateNavigationHyperlink("G", false, "BITTREEVIEW.isReloadRequired = false;"); } foreach (System.Data.DataRow dataRow in allGroupsTable.Rows)//.Select("FK_Parent_Group Is Null", sort.Replace("ORDER BY ", ""))) { //DataTable.Select() sorteert de items opnieuw. Dit is niet de bedoeling. if (dataRow["FK_Parent_Group"] == DBNull.Value) { string rewriteUrl = CreateRewriteUrl(page, drillDownUrl, "G", new Guid(dataRow["ID"].ToString()), dataRow["CompletePath"].ToString(), dataRow["Title"].ToString()); string rootNode = this.treeNodeTemplate; string name = dataRow["Name"].ToString(); rootNode = rootNode .Replace("{TreeNode.DrillDownLink}", drillDownLink) .Replace("{TreeNode.Name}", dataRow["Name"].ToString()) .Replace("{TreeNode.Title}", dataRow["Title"].ToString()) .Replace("{/TreeNode.DrillDownLink}", "</a>") .Replace("{TreeNode.ID}", "TreeNode" + dataRow["ID"].ToString().Replace("-", "")) .Replace("{DrillDownUrl}", rewriteUrl) .Replace("{ID}", dataRow["ID"].ToString()) .Replace("{TreeNode.ChildNodes}", this.BuildTreeNode2(page, allGroupsTable, rootNode, dataRow["ID"].ToString(), viewMode, drillDownUrl, drillDownLink)); rootNodes += rootNode; } } /* if (viewMode == 2) //groups and items * { * foreach (DataItem item in dataCollection.Items) * { * TreeNode itemNode = new TreeNode(); * itemNode.Text = itemNode.Text; * itemNode.Value = item.ID.ToString(); * DataCollectionTreeView.Nodes.Add(itemNode); * } * } */ tree = Content; tree = tree.Replace("<!--{TreeNode}-->" + treeNodeTemplate + "<!--{/TreeNode}-->", rootNodes); tree = tree.Replace("{TreeNode}" + treeNodeTemplate + "{/TreeNode}", rootNodes); string treeDiv = "<div class=\"bitTree\" data-tree-selected-id=\"TreeNode" + dataId.ToString("N") + "\">"; tree = tree.Replace("<!--{TreeView}-->", treeDiv); tree = tree.Replace("{TreeView}", treeDiv); tree = tree.Replace("<!--{/TreeView}-->", "</div>"); tree = tree.Replace("{/TreeView}", "</div>"); return(tree); }