/// <summary>获取异步生成的树</summary>
        /// <param name="treeName">树</param>
        /// <param name="parentId">父级节点标识</param>
        /// <param name="url">链接地址</param>
        /// <param name="enabledLeafClick">只允许点击叶子节点</param>
        /// <param name="elevatedPrivileges">提升权限</param>
        /// <returns>布尔值</returns>
        public DynamicTreeView GetDynamicTreeView(string treeName, string parentId, string url, bool enabledLeafClick, bool elevatedPrivileges)
        {
            string searchPath = (parentId == "0") ? string.Empty : parentId.Replace(@"$", @"\");

            IList <DynamicTreeNode> list = this.provider.GetDynamicTreeNodes(searchPath, string.Empty);

            DynamicTreeView treeView = new DynamicTreeView(treeName, parentId);

            Dictionary <string, DynamicTreeNode> dictionary = new Dictionary <string, DynamicTreeNode>();

            foreach (DynamicTreeNode node in list)
            {
                node.ParentId = parentId;
                node.Url      = url;

                if (!dictionary.ContainsKey(node.Id))
                {
                    if (node.HasChildren && enabledLeafClick)
                    {
                        node.Disabled = 1;
                    }

                    treeView.Add(node);

                    dictionary.Add(node.Id, node);
                }
            }

            return(treeView);
        }
        /// <summary>获取异步生成的树</summary>
        /// <param name="treeName">树</param>
        /// <param name="parentId">父级节点标识</param>
        /// <param name="url">链接地址</param>
        /// <param name="enabledLeafClick">只允许点击叶子节点</param>
        /// <returns>树</returns>
        public DynamicTreeView GetDynamicTreeView(string treeName, string parentId, string url, bool enabledLeafClick)
        {
            string searchPath = (parentId == "0") ? string.Empty : parentId.Replace(@"$", @"\");

            IList <RegionInfo> data = this.FindAll();

            data = data.Where(x => x.ParentId == parentId).ToList();

            IList <DynamicTreeNode> list = new List <DynamicTreeNode>(); // this.provider.GetDynamicTreeNodes(searchPath, string.Empty);

            foreach (RegionInfo d in data)
            {
                list.Add(new DynamicTreeNode()
                {
                    Id = d.Id, Name = d.Name, ParentId = d.ParentId
                });
            }

            DynamicTreeView treeView = new DynamicTreeView(treeName, parentId);

            Dictionary <string, DynamicTreeNode> dictionary = new Dictionary <string, DynamicTreeNode>();

            foreach (DynamicTreeNode node in list)
            {
                node.ParentId = parentId;
                node.Url      = url;

                if (!dictionary.ContainsKey(node.Id))
                {
                    if (node.HasChildren && enabledLeafClick)
                    {
                        node.Disabled = 1;
                    }

                    treeView.Add(node);

                    dictionary.Add(node.Id, node);
                }
            }

            return(treeView);
        }
        /// <summary>保存记录</summary>
        /// <param name="doc">Xml 文档对象</param>
        /// <returns>返回操作结果</returns>
        public string GetDynamicTreeView(XmlDocument doc)
        {
            // 必填字段
            string tree     = XmlHelper.Fetch("tree", doc);
            string parentId = XmlHelper.Fetch("parentId", doc);

            // 附加属性
            string treeViewId             = XmlHelper.Fetch("treeViewId", doc);
            string treeViewName           = XmlHelper.Fetch("treeViewName", doc);
            string treeViewRootTreeNodeId = XmlHelper.Fetch("treeViewRootTreeNodeId", doc);

            string url = XmlHelper.Fetch("url", doc);

            // 是否关闭非叶子节点的js事件
            bool enabledLeafClick = Convert.ToBoolean(XmlHelper.Fetch("enabledLeafClick", doc));

            DynamicTreeView treeView = this.service.GetDynamicTreeView(tree, parentId, url, enabledLeafClick);

            return("{\"data\":" + treeView.ToString() + "," + MessageObject.Stringify("0", I18n.Strings["msg_query_success"], true) + "}");
        }
        /// <summary>保存记录</summary>
        /// <param name="doc">Xml 文档对象</param>
        /// <returns>返回操作结果</returns>
        public string GetDynamicTreeView(XmlDocument doc)
        {
            // 必填字段
            string tree     = XmlHelper.Fetch("tree", doc);
            string parentId = XmlHelper.Fetch("parentId", doc);

            // 附加属性
            string treeViewId             = XmlHelper.Fetch("treeViewId", doc);
            string treeViewName           = XmlHelper.Fetch("treeViewName", doc);
            string treeViewRootTreeNodeId = XmlHelper.Fetch("treeViewRootTreeNodeId", doc);

            string url = XmlHelper.Fetch("url", doc);

            // 是否关闭非叶子节点的js事件
            bool enabledLeafClick = Convert.ToBoolean(XmlHelper.Fetch("enabledLeafClick", doc));

            // 是否提升权限显示所有数据
            bool elevatedPrivileges = Convert.ToBoolean(XmlHelper.Fetch("elevatedPrivileges", doc));

            DynamicTreeView treeView = this.service.GetDynamicTreeView(tree, parentId, url, enabledLeafClick, elevatedPrivileges);

            return("{\"data\":" + treeView.ToString() + ",\"message\":{\"returnCode\":0,\"value\":\"查询成功。\"}}");
        }