public DataGridVM GetTree(DFDictionary dict)
        {
            var vm    = new DataGridVM();
            var di    = new DirectoryInfo(DFPub.ConfigFolder);
            var nodes = new List <WFTreeNode>();

            nodes.Add(new WFTreeNode()
            {
                id = "ROOT", pid = string.Empty, text = "所有表单"
            });

            foreach (var item in di.GetFiles("*.xml", SearchOption.AllDirectories).OrderBy(a => a.FullName))
            {
                var el = XElement.Load(item.FullName);
                if (el.Name != "Form")
                {
                    continue;
                }
                nodes.Add(new WFTreeNode()
                {
                    id   = DFPub.GetAttrValue(el, "Name"),
                    pid  = "ROOT",
                    text = string.Format("{0} {1}", DFPub.GetAttrValue(el, "Name"), DFPub.GetAttrValue(el, "Desc"))
                });
            }

            var listStatus = JsonSerializeHelper.DeserializeObject <List <WFTreeNode> >(Base64StringHelper.ConvertFromBase64String(dict["DF_TREE_VIEWSTATE"]));
            var list       = WFTreeHelper.GenerateTree("ROOT", nodes);

            // 下面这段代码就是为了处理保持客户端树的状态
            WFTreeHelper.SetStatus(nodes, listStatus);
            vm.rows = list;
            return(vm);
        }