Esempio n. 1
0
        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);
        }