private void BindChild(TreeCodeTableModel node, ArrangeBuilder ab)
        {
            if (this.KeyValues != null && this.KeyValues.Count() > 0)
            {
                var _kvs = this.KeyValues.ToList();

                foreach (var k in _kvs)
                {
                    if (node.CODE_VALUE == k)
                    {
                        node.IsSelect = true;
                        break;
                    }
                }
            }

            node.Arrange    = ab.GetText();
            node.LayerLevel = ab.LayerLevel;
            this.OnTreeNodeSetting(node);
            var _nodes = GetChildrenNodes(node.CODE_VALUE).ToList();

            if (_nodes != null && _nodes.Count > 0)
            {
                node.Children = _nodes;
                node.isParent = true;

                ArrangeBuilder abb = ab.Copy();
                abb.AddLevelNode();
                for (int i = 0; i < node.Children.Count(); i++)
                {
                    abb.AddNode();
                    BindChild((node.Children as IList <TreeCodeTableModel>)[i], abb);
                }
            }
            else
            {
                node.isParent = false;
                node.Children = new List <TreeCodeTableModel>();
            }
        }
        public override TreeCodeTableModel GetAllTree()
        {
            TreeCodeTableModel root = new TreeCodeTableModel();

            root.CODE_VALUE = Root;
            ArrangeBuilder ab = new ArrangeBuilder();


            if (Root == "0")
            {
                root.CODE_TEXT = "";
                root.IsLeaf    = false;
                root.isParent  = true;
                root.nocheck   = OnlyLeafCheckbox ? root.isParent.Value <bool?>() : null;
            }
            else
            {
                root = getTreeNode(Root);
            }
            // root.Arrange = ab.GetText();
            BindChild(root, ab);
            return(root);
        }