Exemple #1
0
        /// <summary>
        /// 生成supcan报表控件函数的描述信息
        /// </summary>
        /// <returns></returns>
        public static string SupcanFuncsXmlDescriptor(string catalogs)
        {
            if (string.IsNullOrEmpty(catalogs))
            {
                return(string.Empty);
            }

            FuncConfigure.LoadFuncs(catalogs);
            string[] catalog = catalogs.Split(',');

            IList <DropDownList> dropLists = new List <DropDownList>();

            var xmlDoc = new XmlDocument();

            var xmlDecl = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", "");

            xmlDoc.AppendChild(xmlDecl);

            var xmlRoot  = xmlDoc.CreateElement("root");
            var xmlFuncs = xmlDoc.CreateElement("functions");

            xmlRoot.AppendChild(xmlFuncs);
            xmlDoc.AppendChild(xmlRoot);

            foreach (var s in catalog)
            {
                //取得所有的函数
                var funcList = FuncCache.GetFuncInfoMetaDataByCatalog(s);
                if (funcList == null)
                {
                    continue;
                }
                //catalogid对应的目录名
                if (funcList.Count > 0)
                {
                    string catalogName = funcList[0].Module;
                    //输出XML
                    var xmlCatalog = xmlDoc.CreateElement("catagory");
                    xmlCatalog.SetAttribute("name", catalogName);
                    xmlFuncs.AppendChild(xmlCatalog);

                    funcList.ToList().ForEach(p => {
                        var xmlFunc = xmlDoc.CreateElement("function");
                        xmlFunc.SetAttribute("name", p.Name);
                        xmlCatalog.AppendChild(xmlFunc);

                        var xmlUsage       = xmlDoc.CreateElement("usage");
                        xmlUsage.InnerText = p.Usage;
                        xmlFunc.AppendChild(xmlUsage);

                        var xmlDetail       = xmlDoc.CreateElement("detail");
                        xmlDetail.InnerText = p.Detail;
                        xmlFunc.AppendChild(xmlDetail);

                        //函数参数
                        p.Paras.ToList().ForEach(parm =>
                        {
                            var xmlParam = xmlDoc.CreateElement("para");
                            xmlParam.SetAttribute("datatype", parm.ParamType);
                            xmlParam.SetAttribute("droplistID", parm.DroplistCode);
                            xmlParam.SetAttribute("edittype", parm.EditType);
                            xmlParam.InnerText = parm.Name;

                            //
                            xmlFunc.AppendChild(xmlParam);
                        });

                        var xmlExample       = xmlDoc.CreateElement("example");
                        xmlExample.InnerText = p.Example;
                        xmlFunc.AppendChild(xmlExample);
                    });
                }

                //不同的模块的函数,下拉列表也有可能是一样的
                var dropList = FuncCache.GetDropDownList(s);
                dropList.ToList().ForEach(p => { dropLists.Add(p); });
            }
            //输出dropDwonList
            var xmlDroplists = xmlDoc.CreateElement("DropLists");

            xmlRoot.AppendChild(xmlDroplists);


            dropLists.Distinct().ToList().ForEach(p =>
            {
                var xmlDropList = xmlDoc.CreateElement("DropList");
                xmlDropList.SetAttribute("DisplayCol", p.DisplayCol);
                xmlDropList.SetAttribute("DataCol", p.DataCol);
                xmlDropList.SetAttribute("dataUrl", p.DataUrl);
                xmlDropList.SetAttribute("treelist", p.TreelistUrl);
                xmlDropList.SetAttribute("id", p.Id);

                //多个字符串参数解析
                foreach (var key in p.ParamsDic.AllKeys)
                {
                    xmlDropList.SetAttribute(key, p.ParamsDic[key]);
                }
                xmlDroplists.AppendChild(xmlDropList);
            });

            return(ConvertXmlToString(xmlDoc));
        }