예제 #1
0
        /// <summary>
        /// 树形列表控件(节点编号:父节点编号:节点名称)
        /// </summary>
        /// <param name="dataList">数据列表</param>
        /// <param name="controlName">控件名称</param>
        /// <param name="isTrunkSelect">主节点是否可以触发选中,true:可以,false:不可以</param>
        /// <param name="javaScriptCallback">调用的 JavaScript 函数名称,如果设置,选择节点时触发</param>
        /// <param name="activeClassName">节点选中时样式</param>
        /// <param name="styleEnum">树节点样式风格</param>
        /// <param name="maxLength">排序用长度,默认 2,如果树形编号超过 99,则设置为 3,超过 999,则设置为 4</param>
        /// <param name="style">菜单列表样式</param>
        /// <returns></returns>
        public static string CreateTreeMenu(List <ITreeData> dataList, string controlName, bool isTrunkSelect = true, string javaScriptCallback = null, string activeClassName = "active", string styleEnum = BootstrapTreeStyleEnum.SUPERMANAGER, int maxLength = 2, string style = "background-color:#ffffff;")
        {
            BootstrapTreeConfig bootstrapTreeConfig = TreeNodeConfigDict.ContainsKey(styleEnum) ? TreeNodeConfigDict[styleEnum] : null;
            string        clientControlName         = string.Format("{0}_menu_tree", controlName);
            StringBuilder stringBuilder             = new StringBuilder();

            if (dataList != null && dataList.Count > 0)
            {
                stringBuilder.Append(string.Format("<ul class=\"list-unstyled\" id=\"{0}\" style=\"cursor:pointer;{1}\">", clientControlName, style));
                List <TreeNode <ITreeData> > treeNodeList = TreeHelper.ToTree <ITreeData>(dataList, maxLength);
                treeNodeList.Sort((x, y) =>
                {
                    return((int)(y.Data.TreeUniqueIdentity - x.Data.TreeUniqueIdentity));
                });
                foreach (TreeNode <ITreeData> treeNode in treeNodeList)
                {
                    stringBuilder.Append(InitMenuTree(treeNode, controlName, style, bootstrapTreeConfig, isTrunkSelect));
                }
                stringBuilder.Append("</ul>");
            }
            stringBuilder.Append(@"
                    <script type=""text/javascript"">
                        var {controlName}_prev = null;
                        $(function () {
                            $('#{controlName} .menu_tree_item').click(function (event) {
                                if({controlName}_prev != null){
                                    {controlName}_prev.removeClass('{1}');
                                }
                                {controlName}_prev = $(this);
                                $(this).addClass('{1}');
                                var treeID = $(this).attr('data-tree-id');
                                {0}
                                event.stopPropagation();
                            });
                            $('#{controlName} .menu_tree_i').click(function (event) {
                                var treeID = $(this).attr('data-id');
                                var controlName = $(this).attr('data-name');
                                var treeNode = $('#' + controlName + '_' + treeID);
                                if (treeNode.is(':hidden')) {
                                    treeNode.show();
                                    $(this).removeClass('{defaultClassName}').addClass('{expandClassName}');
                                } else {
                                    treeNode.hide();
                                    $(this).removeClass('{expandClassName}').addClass('{defaultClassName}');
                                }
                                event.stopPropagation();
                            });
                        });
                    </script>".Replace("{0}", !string.IsNullOrEmpty(javaScriptCallback) ? string.Format("{0}(treeID, $(this));", javaScriptCallback) : "")
                                 .Replace("{1}", activeClassName)
                                 .Replace("{controlName}", clientControlName)
                                 .Replace("{defaultClassName}", bootstrapTreeConfig != null ? bootstrapTreeConfig.DefaultClassName : "")
                                 .Replace("{expandClassName}", bootstrapTreeConfig != null ? bootstrapTreeConfig.ExpandClassName : ""));
            return(stringBuilder.ToString());
        }
예제 #2
0
        /// <summary>
        /// 下拉树形列表控件(节点编号:父节点编号:节点名称)
        /// </summary>
        /// <param name="dataList">数据列表</param>
        /// <param name="controlName">控件名称</param>
        /// <param name="isTrunkSelect">主节点是否可以触发选中,true:可以,false:不可以</param>
        /// <param name="javaScriptCallback">调用的 JavaScript 函数名称,如果设置,选择节点时触发</param>
        /// <param name="controlWidth">控件宽</param>
        /// <param name="controlHeight">控件最大高度</param>
        /// <param name="styleEnum">树节点样式风格</param>
        /// <param name="maxLength">排序用长度,默认 2,如果树形编号超过 99,则设置为 3,超过 999,则设置为 4</param>
        /// <returns></returns>
        public static string CreateTreeSelect(List <ITreeData> dataList, string controlName, bool isTrunkSelect = true, string javaScriptCallback = null, int controlWidth = 300, int controlHeight = 200, string styleEnum = BootstrapTreeStyleEnum.SUPERMANAGER, int maxLength = 2)
        {
            BootstrapTreeConfig bootstrapTreeConfig = TreeNodeConfigDict.ContainsKey(styleEnum) ? TreeNodeConfigDict[styleEnum] : null;

            string        clientControlName   = string.Format("{0}_select_menu", controlName);
            string        clientContainerName = string.Format("{0}_select_tree", controlName);
            StringBuilder stringBuilder       = new StringBuilder();

            stringBuilder.Append(string.Format("<div class=\"dropdown\" id=\"{0}\">", clientContainerName));
            stringBuilder.Append(string.Format("<div class=\"form-inline\" id=\"{0}\" data-toggle=\"dropdown\" style=\"width:{1}px;\">", clientControlName, controlWidth));
            stringBuilder.Append(string.Format("<input type=\"text\" id=\"{0}\" name=\"{0}\" class=\"form-control\" style=\"cursor:pointer;background-color:#FFFFFF;width:{1}px;\" readonly=\"readonly\" />", controlName, controlWidth));
            stringBuilder.Append("<span class=\"caret\" style=\"margin-left:-20px;\"></span>");
            stringBuilder.Append("</div>");
            if (dataList != null && dataList.Count > 0)
            {
                stringBuilder.Append(string.Format("<div class=\"dropdown-menu\" aria-labelledby=\"{0}\" style=\"cursor:pointer;width:{1}px;max-height:{2}px;overflow-y:auto;padding:10px 15px;\">", clientControlName, controlWidth, controlHeight));
                stringBuilder.Append("<ul class=\"list-unstyled\">");
                List <TreeNode <ITreeData> > treeNodeList = TreeHelper.ToTree <ITreeData>(dataList, maxLength);
                treeNodeList.Sort((x, y) =>
                {
                    return((int)(y.Data.TreeUniqueIdentity - x.Data.TreeUniqueIdentity));
                });
                foreach (TreeNode <ITreeData> treeNode in treeNodeList)
                {
                    stringBuilder.Append(InitSelectTree(treeNode, controlName, bootstrapTreeConfig, isTrunkSelect));
                }
                stringBuilder.Append("</ul>");
                stringBuilder.Append("</div>");
            }
            stringBuilder.Append("</div>");
            stringBuilder.Append(@"
                    <script type=""text/javascript"">
                        $(function () {
                            $('#{controlName} .select_tree_item').click(function (event) {
                                var controlName = $(this).attr('data-name');
                                $('#' + controlName).val($(this).attr('data-value'));
                                $('#' + controlName + '_select_tree').removeClass('open');
                                var treeID = $(this).attr('data-tree-id');
                                {0}
                                event.stopPropagation();
                            });
                            $('#{controlName} .select_tree_i').click(function (event) {
                                var treeID = $(this).attr('data-id');
                                var controlName = $(this).attr('data-name');
                                var treeNode = $('#' + controlName + '_' + treeID);
                                if (treeNode.is(':hidden')) {
                                    treeNode.show();
                                    $(this).removeClass('{defaultClassName}').addClass('{expandClassName}');
                                } else {
                                    treeNode.hide();
                                    $(this).removeClass('{expandClassName}').addClass('{defaultClassName}');
                                }
                                event.stopPropagation();
                            });
                        });
                    </script>".Replace("{0}", !string.IsNullOrEmpty(javaScriptCallback) ? string.Format("{0}(treeID, $(this));", javaScriptCallback) : "")
                                 .Replace("{controlName}", clientContainerName)
                                 .Replace("{defaultClassName}", bootstrapTreeConfig != null ? bootstrapTreeConfig.DefaultClassName : "")
                                 .Replace("{expandClassName}", bootstrapTreeConfig != null ? bootstrapTreeConfig.ExpandClassName : ""));
            return(stringBuilder.ToString());
        }
예제 #3
0
        private static string InitMenuTree(TreeNode <ITreeData> treeNode, string controlName, string style, BootstrapTreeConfig bootstrapTreeConfig, bool isTrunkSelect)
        {
            string        clientNodeID  = string.Format("menu_tree_{0}", treeNode.Data.TreeID);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append(string.Format("<li class=\"{5}\" data-id=\"{0}\" data-value=\"{1}\" data-layer-id=\"{2}\" data-layer-name=\"{3}\" data-tree-id=\"{4}\" style=\"line-height:30px;\">", clientNodeID, string.Format("{0}:{1}:{2}", treeNode.Data.TreeID, treeNode.Data.TreeParentID, treeNode.Data.TreeName), treeNode.LayerID, treeNode.LayerName, treeNode.Data.TreeID, isTrunkSelect ? "menu_tree_item" : (treeNode != null && treeNode.NodeList.Count > 0 ? "" : "menu_tree_item")));
            stringBuilder.Append(string.Format("<div style=\"padding-left:{0}px;\">", (treeNode.LayerIndex - 1) * (bootstrapTreeConfig != null ? bootstrapTreeConfig.Offset : 0)));
            if (treeNode != null && treeNode.NodeList.Count > 0)
            {
                treeNode.NodeList.Sort((x, y) =>
                {
                    return((int)(y.Data.TreeUniqueIdentity - x.Data.TreeUniqueIdentity));
                });
                // 树形图标会根据情况不同而有所调整
                stringBuilder.Append(string.Format("<i class=\"{3} menu_tree_i\" data-id=\"{0}\" data-name=\"{1}\" style=\"font-size:12px;margin-right:10px;\"></i>{2}</div>", clientNodeID, controlName, treeNode.Data.TreeName, bootstrapTreeConfig != null ? bootstrapTreeConfig.DefaultFullClassName : ""));
                stringBuilder.Append(string.Format("<ul id=\"{0}_{1}\" class=\"list-unstyled\" style=\"display:none;{2}\">", controlName, clientNodeID, style));
                foreach (TreeNode <ITreeData> treeClildNode in treeNode.NodeList)
                {
                    stringBuilder.Append(InitMenuTree(treeClildNode, controlName, style, bootstrapTreeConfig, isTrunkSelect));
                }
                stringBuilder.Append("</ul>");
            }
            else
            {
                stringBuilder.Append(string.Format("{0}</div>", treeNode.Data.TreeName));
            }
            stringBuilder.Append("</li>");
            return(stringBuilder.ToString());
        }