Exemplo n.º 1
0
        //获取toolbar
        public Toolbar GetEditToolbar(PbBillInfo billInfo)
        {
            var    toolbar = new Toolbar();
            string btname  = string.Empty;

            foreach (var buttons in billInfo.DetailToolbarInfo.ToolbarButtonGroupInfosInfos)
            {
                if (buttons == null)
                {
                    continue;
                }

                foreach (var button in buttons.ToolbarButtonInfos)
                {
                    if (button.IsDockLeft)
                    {
                        btname = ButtonNameConvert.ConvertToExtTpye(button);
                        if (!toolbar.LNgButtons.Contains(btname))
                        {
                            toolbar.LNgButtons.Add(btname);
                        }
                    }
                    else
                    {
                        btname = ButtonNameConvert.ConvertToExtTpye(button);
                        if (!toolbar.RNgButtons.Contains(btname))
                        {
                            toolbar.RNgButtons.Add(btname);
                        }
                    }
                }
            }

            return(toolbar);
        }
Exemplo n.º 2
0
        //返回金格fieldset
        public FieldSet GetBlobdoc(PbBillInfo billInfo)
        {
            //含有金格控件
            if (billInfo.OfficeInfo.Visible)
            {
                FieldSet fieldSet = new FieldSet();
                fieldSet.X      = billInfo.OfficeInfo.XPos;
                fieldSet.Y      = billInfo.OfficeInfo.YPos;
                fieldSet.Width  = billInfo.OfficeInfo.Width;
                fieldSet.Height = billInfo.OfficeInfo.Height;
                fieldSet.Title  = string.IsNullOrEmpty(billInfo.BlobdocName) ? "文档控件" : billInfo.BlobdocName;

                //判断金格控件在tab中位置
                foreach (var tabinfo in billInfo.PbTabInfos)
                {
                    for (int i = 0; i < tabinfo.GridIds.Count; i++)
                    {
                        if (tabinfo.GridIds[i] == "blobdoc")  //不是金格控件和进度控件才是grid
                        {
                            fieldSet.Region = Convert.ToString(i);
                            break;
                        }
                    }
                }

                return(fieldSet);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 3
0
 public void GetWfGrid(PbBillInfo billInfo)
 {
     if (billInfo.WfGridInfo.Visible || billInfo.WfGridInfo.PbBaseTextInfos.Count > 0)
     {
         WfGrid = ControlConverter.ConvertToExtPanel(billInfo.WfGridInfo);
     }
 }
Exemplo n.º 4
0
        //用来存 col   id , 中文, 控件type

        public AppPbEditFormParser(PbBillInfo billInfo)
        {
            FieldSets   = GetFieldSetInfo(billInfo);
            GridPanels  = GetGridPanel();
            LayoutForm  = GetFormInfo();
            Expressions = GetExpressions(billInfo);
            TB          = GetEditToolbar(billInfo);
            tabinfos    = GetTabInfos(billInfo);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 生成app表单服务端dll;
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="assemblyPath"></param>
        /// <param name="isGenerateCsFile"></param>
        /// <param name="csFilePath"></param>
        /// <returns></returns>
        public static bool GenerateApp(PbBillInfo billInfo, string assemblyPath, bool isGenerateCsFile, string csFilePath, string ucode)
        {
            try
            {
                //参数设置
                var templateInfo = new TemplateInfo
                {
                    NameSpacePrefix = "SUP.CustomForm",
                    ClassName       = ucode + billInfo.Name.Replace("pform", "aform"),  //NG0001pform0000000008
                    PForm           = billInfo.Name.Replace("pform", "aform"),          //pform0000000008
                    EForm           = billInfo.Name.Replace("pform", "EFORM"),          //EFORM0000000008
                    QForm           = billInfo.Name.Replace("pform", "w_eform_p_list"), //w_eform_p_list0000600008
                    TableMaster     = billInfo.HeadInfo.TableName,
                    Title           = billInfo.Description,
                    SqlList         = billInfo.PbList.Sql,
                    SqlMaster       = billInfo.HeadInfo.Sql
                };

                //List中生成代码转名称相关代码
                foreach (var helpControl in billInfo.PbList.PbBaseTextInfos)  //mod by ljy 2016.12.08 billInfo.HeadInfo.PbColumns 改成 billInfo.PbList.PbBaseTextInfos
                {
                    if (helpControl.ControlType.ToString() == "DataHelpEdit")
                    {
                        var helpEdit       = (PbDataHelpEditInfo)helpControl;
                        var codeToNameInfo = new CodeToNameInfo
                        {
                            TableName   = billInfo.PbList.TableName,
                            CodeName    = helpEdit.ColumnInfo.ColumnName,
                            HelpId      = helpEdit.DataHelpId,
                            MultiSelect = helpEdit.MultiSelect
                        };

                        templateInfo.CodeToNameList.Add(codeToNameInfo);
                    }
                }

                var controllerTemplate = new AppControllerTemplate(templateInfo);

                if (isGenerateCsFile)  //生成代码文件
                {
                    string path = csFilePath + templateInfo.ClassName;
                    controllerTemplate.WriteEx(ref path);
                    NG3.Compile.Compiler.CompileFromFile(path, assemblyPath, true, templateInfo.NameSpacePrefix + "." + templateInfo.ClassName + ".Controller");
                }
                else  //不生成代码文件
                {
                    string[] codeArray = new string[] { controllerTemplate.WriteEx() };
                    NG3.Compile.Compiler.CompileFromCode(codeArray, assemblyPath, templateInfo.NameSpacePrefix + "." + templateInfo.ClassName + ".Controller");
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return(true);
        }
Exemplo n.º 6
0
 public void GetPictureBoxs(PbBillInfo billInfo)
 {
     foreach (PbPictureboxInfo picturebox in billInfo.HeadInfo.PbPictureboxInfos)
     {
         if (picturebox.Visible)
         {
             PictureBoxs.Add(ControlConverter.GetPictureBox(picturebox));
         }
     }
 }
Exemplo n.º 7
0
        public static PbBillInfo GetBillBase(string fileName)
        {
            ParseManager parseManagerApp = new ParseManager();
            PbBillInfo   billInfo        = parseManagerApp.ParseBillFileApp(fileName);

            fName = fileName.Substring(fileName.LastIndexOf("\\") + 2,
                                       fileName.LastIndexOf(".") - fileName.LastIndexOf("\\") - 1);

            Log("------>>>> 开始解析" + fName + ".ini");
            return(billInfo);
        }
Exemplo n.º 8
0
 public List <String> GetTabInfos(PbBillInfo billInfo)
 {
     foreach (var tabinfo in billInfo.PbTabInfos)
     {
         foreach (var gridid in tabinfo.GridIds)
         {
             tabinfos.Add(gridid);
         }
     }
     return(tabinfos);
 }
Exemplo n.º 9
0
        //groupbox转fieldset,没有groupbox转ngFormPanel
        private void SetContainer(PbBillInfo billInfo)
        {
            //含有groupbox表头
            if (billInfo.HeadInfo.PbBaseControlInfos.Count > 0)
            {
                //将容器都先放入containers
                foreach (var headinfo in billInfo.HeadInfo.PbBaseControlInfos)
                {
                    AppFieldSet fieldSet = new AppFieldSet();
                    fieldSet.X      = headinfo.XPos;
                    fieldSet.Y      = headinfo.YPos;
                    fieldSet.Width  = headinfo.Width;
                    fieldSet.Height = headinfo.Height;
                    fieldSet.ID     = headinfo.Id;
                    fieldSet.Title  = ((PbGroupboxInfo)(headinfo)).Text;
                    fieldSets.Add(fieldSet);
                }
            }

            foreach (var pbColumn in billInfo.HeadInfo.PbColumns)
            {
                //将控件放到指定的容器内
                FindContain(pbColumn, pbColumn.XPos, pbColumn.YPos);
            }

            //因为要赋值回去,所以不能foreach
            for (int i = 0; i < fieldSets.Count; i++)
            {
                Dictionary <int, SortedList <int, PbBaseControlInfo> > dic =
                    new Dictionary <int, SortedList <int, PbBaseControlInfo> >();
                fieldSets[i].Items = this.Sort(fieldSets[i].Items, ref dic);
            }


            for (int i = 0; i < fieldSets.Count; i++)
            {
                //转类型
                foreach (var item in fieldSets[i].Items)
                {
                    fieldSets[i].AllFields.Add(ControlConverter.ConvertToExtControl(item));
                }
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// App表单信息
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static PbFormInfo GetBillInfo(string fileName)
        {
            PbFormInfo info = new PbFormInfo();

            PbBillInfo billInfo = GetBillBase(fileName);

            info.BillName = billInfo.Name;
            info.Title    = billInfo.Description;

            //列表;
            info.ListTable = billInfo.PbList.TableName;
            info.ListSql   = billInfo.PbList.Sql;

            //表头;
            info.MasterTable = billInfo.HeadInfo.TableName;
            info.MasterSql   = billInfo.HeadInfo.Sql;
            info.HeaderName  = billInfo.HeadInfo.Name;

            return(info);
        }
Exemplo n.º 11
0
        public GridPanel GetGridInfo(PbBillInfo billInfo)
        {
            GridPanel listgrid = new GridPanel();

            listgrid.ID        = billInfo.PbList.Id;
            listgrid.Region    = "center";//默认自适应
            listgrid.TableName = billInfo.PbList.TableName;
            listgrid.Sql       = billInfo.PbList.Sql;

            listgrid.Columns = CommonParser.GetListColumns(billInfo.PbList.PbBaseTextInfos);

            //用于判断grid中某些列是否存在
            foreach (var item in listgrid.Columns)
            {
                listgrid.ColumnNames.Add(item.DataIndex);
            }

            CommonParser.Log("ListGrid转换成功.");

            return(listgrid);
        }
Exemplo n.º 12
0
        public List <PbTabInfo> GetTabInfos(PbBillInfo billInfo)
        {
            List <PbTabInfo> tabinfos = new List <PbTabInfo>();

            //所有tab循环转换,目前只支持一个tab,也就是billInfo.PbTabInfos数量为1
            foreach (var tabinfo in billInfo.PbTabInfos)
            {
                PbTabInfo tab = new PbTabInfo();
                tab.GridIds     = tabinfo.GridIds;
                tab.ReportViews = tabinfo.ReportViews;
                tab.ReportParas = tabinfo.ReportParas;
                tab.TabNames    = tabinfo.TabNames;
                tab.XPos        = tabinfo.XPos;
                tab.YPos        = tabinfo.YPos;
                tab.Width       = tabinfo.Width;
                tab.Height      = tabinfo.Height;
                tab.Name        = tabinfo.Name;
                tabinfos.Add(tab);
            }

            return(tabinfos);
        }
Exemplo n.º 13
0
        //表头普通的
        public TableLayoutForm GetFormInfo(PbBillInfo billInfo)
        {
            Dictionary <int, SortedList <int, PbBaseControlInfo> > dic =
                new Dictionary <int, SortedList <int, PbBaseControlInfo> >();

            layoutForm.Items = this.Sort(layoutForm.Items, ref dic);

            /*  comment by ljy 此函数废弃,列宽改成按设计器列属性设置来确定
             * //计算该fieldset 每行最多的colspan
             * layoutForm = CalColSpan(layoutForm, dic);
             * layoutForm.ColumnsPerRow = 4;
             */

            layoutForm.FieldRows = GetFieldsRows(dic, null, layoutForm);    //二维字段信息,放在CalColSpan方法之后

            layoutForm.IsAbsoluteLayout = billInfo.HeadInfo.Abslayout;      //是否绝对布局
            layoutForm.Otid             = billInfo.HeadInfo.Otid;           //文档模板可选项
            layoutForm.ColumnsPerRow    = billInfo.HeadInfo.ColumnsPerRow;  //每行分几列
            layoutForm.FormLabelWidth   = billInfo.HeadInfo.FormLabelWidth; //每列占位数

            return(layoutForm);
        }
Exemplo n.º 14
0
        //获取表达式
        public Dictionary <String, String> GetExpressions(PbBillInfo billInfo)
        {
            GetTableRelation(); //将表关系确定,表达式中可能需要用到
            GetColRelation();
            for (int i = 0; i < containers.Count; i++)
            {
                foreach (var item in containers[i].Items)
                {
                    if (item is PbGridInfo)
                    {
                        continue;  //表体内的控件事件暂无
                    }
                    var temp = (PbBaseTextInfo)item;
                    ConvertExpression(temp.UpdateEvent.PbImp, "Normal");
                }
            }


            //新增状态打开时的事件
            if (billInfo.EditAddInitEvent.PbImp.Count > 0)
            {
                ConvertExpression(billInfo.EditAddInitEvent.PbImp, "AddInit");
            }

            //保存时更新事件
            if (billInfo.BillSaveUpdateEvent.PbImp.Count > 0)
            {
                ConvertExpression(billInfo.BillSaveUpdateEvent.PbImp, "SaveUpdate");
            }

            //保存前校验事件
            if (billInfo.BillBeforeSaveEvent.PbImp.Count > 0)
            {
                ConvertExpression(billInfo.BillBeforeSaveEvent.PbImp, "BeforeSave");
            }

            return(expressions);
        }
Exemplo n.º 15
0
        /// <summary>
        /// pc web表单  comment by ljy 2016.10.27 此函数暂时废弃
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static PbFormInfo GetBillInfo(string fileName)
        {
            PbFormInfo info = new PbFormInfo();

            PbBillInfo billInfo = GetBillBase(fileName);

            info.BillName = billInfo.Name;
            info.Title    = billInfo.Description;
            info.HasTab   = billInfo.PbTabInfos.Count > 0 ? true : false;

            //列表;
            info.ListTable = billInfo.PbList.TableName;
            info.ListSql   = billInfo.PbList.Sql;

            //表头;
            info.MasterTable = billInfo.HeadInfo.TableName;
            info.MasterSql   = billInfo.HeadInfo.Sql;
            info.HeaderName  = billInfo.HeadInfo.Name;

            //明细表,目前明细仅支持grid;
            foreach (PbGridInfo grid in billInfo.PbGrids)
            {
                DetailInfo detailInfo = new DetailInfo();
                detailInfo.Name      = grid.Name;
                detailInfo.TableName = grid.TableName;
                detailInfo.Sql       = grid.Sql;

                //二级明细暂不处理;
                if (info.Detail.ContainsKey(grid.Name))
                {
                    continue;
                }
                info.Detail.Add(grid.Name, detailInfo);
            }

            return(info);
        }
Exemplo n.º 16
0
 public AppEditParser(PbBillInfo billInfo)
 {
     SetContainer(billInfo);
     SetFormPanel();
 }
Exemplo n.º 17
0
        //groupbox里面的fieldset
        public List <FieldSet> GetFieldSetInfo(PbBillInfo billInfo)
        {
            //1.定义容器:表头的groupbox,转成ng3中fieldset
            if (billInfo.HeadInfo.PbBaseControlInfos.Count > 0)
            {
                //将fieldset都先放入containers
                foreach (var headinfo in billInfo.HeadInfo.PbBaseControlInfos)
                {
                    FieldSet fieldSet = new FieldSet();
                    fieldSet.X      = headinfo.XPos;
                    fieldSet.Y      = headinfo.YPos;
                    fieldSet.Width  = headinfo.Width;
                    fieldSet.Height = headinfo.Height;
                    fieldSet.ID     = headinfo.Id;
                    fieldSet.Title  = ((PbGroupboxInfo)(headinfo)).Text;

                    //设置fieldset折叠属性,/0、null或空:不能折叠,默认展开,1:能折叠,默认展开,2:能折叠,默认折叠,3:隐藏
                    var collapse = ((PbGroupboxInfo)(headinfo)).Collapse;
                    if (collapse == "1")
                    {
                        fieldSet.Collapsible = true;
                        fieldSet.Collapsed   = false;
                    }
                    else if (collapse == "2")
                    {
                        fieldSet.Collapsible = true;
                        fieldSet.Collapsed   = true;
                    }
                    else if (collapse == "3")
                    {
                        fieldSet.Collapsible = false;
                        fieldSet.Collapsed   = false;
                        fieldSet.Border      = false;
                        fieldSet.Title       = "";
                    }
                    else
                    {
                        fieldSet.Collapsible = false;  //不允许折叠
                        fieldSet.Collapsed   = false;  //默认展开
                    }

                    containers.Add(fieldSet);
                }
            }

            //2.表头所有列(包括fieldset中列),放到layoutForm或容器
            foreach (var pbColumn in billInfo.HeadInfo.PbColumns)
            {
                //将控件放到指定的容器内
                FindContain(pbColumn, pbColumn.XPos, pbColumn.YPos);
            }

            //3.容器内列排序和生成成二维列表列
            for (int i = 0; i < containers.Count; i++)
            {
                Dictionary <int, SortedList <int, PbBaseControlInfo> > dic =
                    new Dictionary <int, SortedList <int, PbBaseControlInfo> >();
                containers[i].Items = Sort(containers[i].Items, ref dic);

                /*  comment by ljy 此函数废弃,列宽改成按设计器列属性设置来确定
                 * //计算该fieldset 每行最多的colspan
                 * //算占多少  //不能用ref 动态类
                 * containers[i] = CalColSpan(containers[i], dic);
                 * //containers[i].ColumnsPerRow = 4;
                 */

                containers[i].ColumnsPerRow = billInfo.HeadInfo.ColumnsPerRow;  //每行分几列

                //按行布局二维列表结构, 控件转成ng3类型; 容器内所有列转成ng3类型后赋给Allfields; 每行几列按设计器上实际布局来
                containers[i].FieldRows = GetFieldsRows(dic, containers[i], null);
            }

            //4.表体所有grid(包括fieldset中grid),转成ng类型并放到grids或容器(fieldset中可能有grid,在设计时就应该避免groupbox中有grid)
            if (billInfo.PbGrids.Count > 0)
            {
                foreach (var gridpanel in billInfo.PbGrids)
                {
                    FindContain(gridpanel, gridpanel.XPos, gridpanel.YPos);
                }
            }


            /*
             * //含有金格控件
             * if (billInfo.OfficeInfo.Visible)
             * {
             *  FieldSet fieldSet = new FieldSet();
             *  fieldSet.X = billInfo.OfficeInfo.XPos;
             *  fieldSet.Y = billInfo.OfficeInfo.YPos;
             *  fieldSet.Width = billInfo.OfficeInfo.Width;
             *  fieldSet.Height = billInfo.OfficeInfo.Height;
             *  fieldSet.Title = "金格控件";
             *  FieldSetBlobdoc = fieldSet;  //赋给返回的金格控件fieldset
             *  //containers.Add(fieldSet);
             * }
             *
             * //含有进度控件
             * if (billInfo.ScheduleInfo.Visible)
             * {
             *  FieldSet fieldSet = new FieldSet();
             *  fieldSet.X = billInfo.ScheduleInfo.XPos;
             *  fieldSet.Y = billInfo.ScheduleInfo.YPos;
             *  fieldSet.Width = billInfo.ScheduleInfo.Width;
             *  fieldSet.Height = billInfo.ScheduleInfo.Height;
             *  fieldSet.Title = "进度控件";
             *  containers.Add(fieldSet);
             * }
             */

            //为容器内的控件进行布局 region
            //SetLayout();

            //GroupBox根据Y坐标进行排序
            containers.Sort((x, y) => x.Y.CompareTo(y.Y));

            CommonParser.Log("GroupBox转换成功.");

            return(containers);
        }
Exemplo n.º 18
0
        /// <summary>
        /// ex:
        /// ParseManager parseManager = new ParseManager();
        /// PbBillInfo billInfo = parseManager.ParseBillFile(@"F:\NG3\PowerBuilder\0000000069.ini");
        /// </summary>
        /// <param name="billInfo"> </param>
        /// <returns></returns>
        public static bool GenerateApp(PbBillInfo billInfo, ref string winType, string ucode)
        {
            string className = (ucode + billInfo.Name).Replace("pform", "aform");  //NG0001pform0000000008
            string title     = billInfo.Description;

            try
            {
                DbHelper.Open(); //ConnectionString

                //List gridPanel
                PbListFormParser PbListParser = new PbListFormParser();
                GridPanel        gridPanel    = PbListParser.GetGridInfo(billInfo);
                Toolbar          toolbar      = PbListParser.GetListToolbar(billInfo);

                //Edit
                PbEditFormParser pbEdit     = new PbEditFormParser(billInfo);
                List <string>    PanelNames = new List <string>();

                //记录所有的panel
                foreach (var set in pbEdit.FieldSets)
                {
                    foreach (var panel in set.Panels)
                    {
                        PanelNames.Add(panel.TableName);
                    }
                }

                foreach (var panel in pbEdit.GridPanels)
                {
                    PanelNames.Add(panel.TableName);
                }

                string area = "SUP";

                try
                {
                    #region list
                    AformListTemplate.ListOrEdit = "viewedit";
                    if (gridPanel.Columns.Count > 0)  //否则不生成列表界面
                    {
                        winType = "List";
                        CommonParser.Log("List界面开始生成.");

                        AformListTemplate.NameSpacePrefix = area;
                        AformListTemplate.NameSpaceSuffix = "CustomForm";
                        AformListTemplate.ClassName       = className;
                        AformListTemplate.PkPropertyname  = "phid";
                        AformListTemplate.ListOrEdit      = "viewlist";
                        AformListTemplate.Title           = title;
                        AformListTemplate.Area            = area;
                        AformListTemplate.gridPanel       = gridPanel;
                        AformListTemplate.Toolbar         = toolbar;
                        AformListTemplate.WriteEx(area);

                        CommonParser.Log("List界面生成成功.");
                    }
                    #endregion


                    #region edit
                    CommonParser.Log("Edit界面开始生成.");

                    AformEditTemplate.NameSpacePrefix = area;
                    AformEditTemplate.NameSpaceSuffix = "CustomForm";
                    AformEditTemplate.ClassName       = className;
                    AformEditTemplate.PkPropertyname  = "phid";
                    AformEditTemplate.ListOrEdit      = "viewedit";
                    AformEditTemplate.Title           = title;
                    AformEditTemplate.Area            = area;
                    AformEditTemplate.gridPanel       = gridPanel;
                    AformEditTemplate.fieldSets       = pbEdit.FieldSets;
                    AformEditTemplate.panels          = pbEdit.GridPanels;
                    AformEditTemplate.tableLayouts    = pbEdit.LayoutForm;
                    AformEditTemplate.PanelNames      = PanelNames;
                    AformEditTemplate.Expressions     = pbEdit.Expressions;
                    AformEditTemplate.Toolbar         = pbEdit.TB;
                    AformEditTemplate.WriteEx(area);

                    CommonParser.Log("Edit界面生成成功.");
                    #endregion
                }
                catch (Exception e)
                {
                    CommonParser.Log(e.Message);
                    //throw new Exception(e.Message);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                DbHelper.Close();//ConnectionString);
            }
            return(true);
        }
Exemplo n.º 19
0
        /// <summary>
        /// ex:
        /// ParseManager parseManager = new ParseManager();
        /// </summary>
        /// <param name="billInfo"> </param>
        /// <returns></returns>
        public static bool Generate(PbBillInfo billInfo, ref string winType, string extJsStr, string ucode)
        {
            string className    = ucode + billInfo.Name;                    //NG0001pform0000000008
            string pform        = billInfo.Name;                            //pform0000000008
            string eform        = pform.Replace("pform", "EFORM");          //EFORM0000000008
            string qform        = pform.Replace("pform", "w_eform_p_list"); //w_eform_p_list0000600008
            string title        = billInfo.Description;
            string istask       = billInfo.IsTask;
            string reltable     = billInfo.Reltable;
            bool   hasTab       = billInfo.PbTabInfos.Count > 0 ? true : false;
            string tableNameMst = billInfo.HeadInfo.TableName;


            DbHelper.Open();

            //List窗口 gridPanel
            PbListFormParser PbListParser = new PbListFormParser();
            GridPanel        gridPanel    = PbListParser.GetGridInfo(billInfo);
            Toolbar          toolbar      = PbListParser.GetListToolbar(billInfo);

            //Edit窗口 form grid
            PbEditFormParser pbEdit     = new PbEditFormParser(billInfo);
            List <String>    PanelNames = new List <string>();

            //记录所有的panel
            foreach (var set in pbEdit.FieldSets)
            {
                foreach (var panel in set.Panels)
                {
                    PanelNames.Add(panel.TableName);
                }
            }

            foreach (var panel in pbEdit.GridPanels)
            {
                PanelNames.Add(panel.TableName);
            }

            ////任务分解需求,拼grid属性集合json串并保存到p_form_m表,如{"p_form0000000010_d":"deptid,remarks;deptid A,remarks A;prc@sum,amt@sum"}
            //if (billInfo.IsTask == "1" && pbEdit.AllGrids.Count > 0)
            //{
            //    string grid_detail = "{";

            //    foreach (GridPanel grid in pbEdit.AllGrids)
            //    {
            //        if (!string.IsNullOrEmpty(grid.Subtotal))
            //        {
            //            grid_detail += "\"" + grid.TableName + "\":\"" + grid.Subtotal + "\",";
            //        }
            //    }

            //    grid_detail = grid_detail.TrimEnd(',') + "}";

            //    DbHelper.ExecuteNonQuery(string.Format("update p_form_m set grid_detail='{0}' where code='{1}'", grid_detail, billInfo.Code));
            //}


            string area = "SUP";

            #region list
            if (gridPanel.Columns.Count > 0)
            {
                winType = "List";

                CommonParser.Log("List界面开始生成.");
                //否则不生成
                PageListTemplate   PageListTemplate   = new PageListTemplate();
                PageListJsTemplate PageListJsTemplate = new PageListJsTemplate();
                PageListTemplate.NameSpacePrefix = area;
                PageListTemplate.NameSpaceSuffix = "CustomForm";
                PageListTemplate.ClassName       = className;
                PageListTemplate.Title           = title;
                PageListTemplate.WriteEx("SUP");

                PageListJsTemplate.NameSpacePrefix = area;
                PageListJsTemplate.NameSpaceSuffix = "CustomForm";
                PageListJsTemplate.ClassName       = className;
                PageListJsTemplate.EForm           = eform;
                PageListJsTemplate.PForm           = pform;
                PageListJsTemplate.QForm           = qform;
                PageListJsTemplate.IsTask          = istask;
                PageListJsTemplate.PkPropertyname  = "phid";
                PageListJsTemplate.Title           = title;
                PageListJsTemplate.Area            = area;
                PageListJsTemplate.gridPanel       = gridPanel;
                PageListJsTemplate.Toolbar         = toolbar;
                PageListJsTemplate.HasBlobdoc      = billInfo.HasBlobdoc;
                PageListJsTemplate.HasEppocx       = billInfo.HasEppocx;
                PageListJsTemplate.HasReport       = billInfo.HasReport;
                PageListJsTemplate.WriteEx("SUP");

                CommonParser.Log("List界面生成成功.");
            }
            #endregion


            #region edit
            CommonParser.Log("Edit界面开始生成.");

            PageEditTemplate  PageEditTemplate  = new PageEditTemplate();
            PageJsExtTemplate PageJsExtTemplate = new PageJsExtTemplate();
            PageEditTemplate.NameSpacePrefix = area;
            PageEditTemplate.NameSpaceSuffix = "CustomForm";
            PageEditTemplate.ClassName       = className;
            PageEditTemplate.Title           = title;
            PageEditTemplate.SumRowStyle     = billInfo.SumRowStyle;
            PageEditTemplate.NoSumRowStyle   = billInfo.NoSumRowStyle;
            PageEditTemplate.WriteEx("SUP");

            //扩展脚本生成
            PageJsExtTemplate.ClassName = className;
            PageJsExtTemplate.ExtJsStr  = extJsStr;
            PageJsExtTemplate.WriteEx("SUP");

            if (!hasTab)  //无tab页
            {
                PageEditJsTemplate PageEditJSTemplate = new PageEditJsTemplate();
                PageEditJSTemplate.NameSpacePrefix = area;
                PageEditJSTemplate.NameSpaceSuffix = "CustomForm";
                PageEditJSTemplate.ClassName       = className;
                PageEditJSTemplate.PForm           = pform;
                PageEditJSTemplate.EForm           = eform;
                PageEditJSTemplate.QForm           = qform;
                PageEditJSTemplate.IsTask          = istask;
                PageEditJSTemplate.Reltable        = reltable;
                PageEditJSTemplate.PkPropertyname  = "phid";
                PageEditJSTemplate.Title           = title;
                PageEditJSTemplate.Area            = area;
                PageEditJSTemplate.fieldSets       = pbEdit.FieldSets;
                PageEditJSTemplate.panels          = pbEdit.GridPanels;
                PageEditJSTemplate.AllGrids        = pbEdit.AllGrids;
                PageEditJSTemplate.tableLayouts    = pbEdit.LayoutForm;
                PageEditJSTemplate.PanelNames      = PanelNames;
                PageEditJSTemplate.Expressions     = pbEdit.Expressions;
                PageEditJSTemplate.Toolbar         = pbEdit.TB;
                PageEditJSTemplate.TableName       = tableNameMst;
                PageEditJSTemplate.BodyCmpCount    = billInfo.BodyCmpCount;
                PageEditJSTemplate.HasBlobdoc      = billInfo.HasBlobdoc;
                PageEditJSTemplate.HasEppocx       = billInfo.HasEppocx;
                PageEditJSTemplate.HasReport       = billInfo.HasReport;
                PageEditJSTemplate.FieldSetBlobdoc = pbEdit.FieldSetBlobdoc;
                PageEditJSTemplate.PictureBoxs     = pbEdit.PictureBoxs;
                PageEditJSTemplate.HasAsrGrid      = billInfo.AsrGridInfo.Visible ? "1" : "0";
                PageEditJSTemplate.AsrGrid         = pbEdit.AsrGrid;
                PageEditJSTemplate.HasWfGrid       = billInfo.WfGridInfo.Visible ? "1" : "0";
                PageEditJSTemplate.WfGrid          = pbEdit.WfGrid;
                PageEditJSTemplate.WriteEx("SUP");
            }
            else
            {
                //有tab页
                PageEditJsWithTabTemplate PageEditJsWithTabTemplate = new PageEditJsWithTabTemplate();
                PageEditJsWithTabTemplate.NameSpacePrefix = area;
                PageEditJsWithTabTemplate.NameSpaceSuffix = "CustomForm";
                PageEditJsWithTabTemplate.ClassName       = className;
                PageEditJsWithTabTemplate.PForm           = pform;
                PageEditJsWithTabTemplate.EForm           = eform;
                PageEditJsWithTabTemplate.QForm           = qform;
                PageEditJsWithTabTemplate.IsTask          = istask;
                PageEditJsWithTabTemplate.PkPropertyname  = "phid";
                PageEditJsWithTabTemplate.Title           = title;
                PageEditJsWithTabTemplate.Area            = area;
                PageEditJsWithTabTemplate.fieldSets       = pbEdit.FieldSets;
                PageEditJsWithTabTemplate.panels          = pbEdit.GridPanels;
                PageEditJsWithTabTemplate.AllGrids        = pbEdit.AllGrids;
                PageEditJsWithTabTemplate.tabInfos        = pbEdit.tabinfos;
                PageEditJsWithTabTemplate.tableLayouts    = pbEdit.LayoutForm;
                PageEditJsWithTabTemplate.PanelNames      = PanelNames;
                PageEditJsWithTabTemplate.Expressions     = pbEdit.Expressions;
                PageEditJsWithTabTemplate.Toolbar         = pbEdit.TB;
                PageEditJsWithTabTemplate.TableName       = tableNameMst;
                PageEditJsWithTabTemplate.BodyCmpCount    = billInfo.BodyCmpCount;
                PageEditJsWithTabTemplate.HasBlobdoc      = billInfo.HasBlobdoc;
                PageEditJsWithTabTemplate.HasEppocx       = billInfo.HasEppocx;
                PageEditJsWithTabTemplate.HasReport       = billInfo.HasReport;
                PageEditJsWithTabTemplate.FieldSetBlobdoc = pbEdit.FieldSetBlobdoc;
                PageEditJsWithTabTemplate.PictureBoxs     = pbEdit.PictureBoxs;
                PageEditJsWithTabTemplate.HasAsrGrid      = billInfo.AsrGridInfo.PbBaseTextInfos.Count > 0 ? "1" : "0";
                PageEditJsWithTabTemplate.AsrGrid         = pbEdit.AsrGrid;
                PageEditJsWithTabTemplate.HasWfGrid       = billInfo.WfGridInfo.PbBaseTextInfos.Count > 0 ? "1" : "0";
                PageEditJsWithTabTemplate.WfGrid          = pbEdit.WfGrid;
                PageEditJsWithTabTemplate.WriteEx("SUP");
            }
            CommonParser.Log("Edit界面生成成功.");
            #endregion

            DbHelper.Close();

            return(true);
        }
Exemplo n.º 20
0
        //groupbox里面的fieldset
        public List <FieldSet> GetFieldSetInfo(PbBillInfo billInfo)
        {
            //含有groupbox表头
            if (billInfo.HeadInfo.PbBaseControlInfos.Count > 0)
            {
                //将容器都先放入containers
                foreach (var headinfo in billInfo.HeadInfo.PbBaseControlInfos)
                {
                    FieldSet fieldSet = new FieldSet();
                    fieldSet.X      = headinfo.XPos;
                    fieldSet.Y      = headinfo.YPos;
                    fieldSet.Width  = headinfo.Width;
                    fieldSet.Height = headinfo.Height;
                    fieldSet.ID     = headinfo.Id;
                    fieldSet.Title  = ((PbGroupboxInfo)(headinfo)).Text;
                    containers.Add(fieldSet);
                }
            }

            foreach (var pbColumn in billInfo.HeadInfo.PbColumns)
            {
                //将控件放到指定的容器内
                FindContain(pbColumn, pbColumn.XPos, pbColumn.YPos);
            }

            //因为要赋值回去,所以不能foreach
            for (int i = 0; i < containers.Count; i++)
            {
                Dictionary <int, SortedList <int, PbBaseControlInfo> > dic =
                    new Dictionary <int, SortedList <int, PbBaseControlInfo> >();
                containers[i].Items = this.Sort(containers[i].Items, ref dic);

                //计算该fieldset 每行最多的colspan
                //算占多少  //不能用ref 动态类
                containers[i] = CalColSpan(containers[i], dic);
            }

            //含有表体
            if (billInfo.PbGrids.Count > 0)
            {
                foreach (var gridpanel in billInfo.PbGrids)
                {
                    FindContain(gridpanel, gridpanel.XPos, gridpanel.YPos);
                }
            }

            //含有金格控件
            if (billInfo.OfficeInfo.Visible)
            {
                FieldSet fieldSet = new FieldSet();
                fieldSet.X      = billInfo.OfficeInfo.XPos;
                fieldSet.Y      = billInfo.OfficeInfo.YPos;
                fieldSet.Width  = billInfo.OfficeInfo.Width;
                fieldSet.Height = billInfo.OfficeInfo.Height;
                fieldSet.Title  = "金格控件";
                containers.Add(fieldSet);
            }

            //含有进度控件
            if (billInfo.ScheduleInfo.Visible)
            {
                FieldSet fieldSet = new FieldSet();
                fieldSet.X      = billInfo.ScheduleInfo.XPos;
                fieldSet.Y      = billInfo.ScheduleInfo.YPos;
                fieldSet.Width  = billInfo.ScheduleInfo.Width;
                fieldSet.Height = billInfo.ScheduleInfo.Height;
                fieldSet.Title  = "进度控件";
                containers.Add(fieldSet);
            }

            //为容器内的控件进行布局 region
            SetLayout();

            for (int i = 0; i < containers.Count; i++)
            {
                //转类型
                foreach (var item in containers[i].Items)
                {
                    if (item is PbGridInfo)
                    {
                        containers[i].Panels.Add(ControlConverter.ConvertToExtPanel((PbGridInfo)item));
                    }
                    else
                    {
                        containers[i].AllFields.Add(ControlConverter.ConvertToExtControl(item));
                    }
                    //PbBaseControlInfo pbcontrol = item;
                    // expressions.Add(()pbcontrol.);
                }
            }
            CommonParser.Log("GroupBox转换成功.");
            return(containers);
        }
Exemplo n.º 21
0
        //获取表达式
        public Dictionary <string, string> GetExpressions(PbBillInfo billInfo)
        {
            GetTableRelation(); //将表关系确定,表达式中可能需要用到
            GetColRelation();

            //groupbox控件的更新事件
            for (int i = 0; i < containers.Count; i++)
            {
                foreach (var item in containers[i].Items)
                {
                    if (item is PbGridInfo)
                    {
                        continue;  //表体内的控件事件暂无
                    }
                    var temp = (PbBaseTextInfo)item;
                    ConvertExpression(temp.UpdateEvent.PbImp, "Normal", temp.Name);
                    ConvertExpression(temp.VisibleExpressionImp, "Normal", temp.Name);
                    ConvertExpression(temp.IsMustInputExpressionImp, "Normal", temp.Name);
                    ConvertExpression(temp.IsReadOnlyExpressionImp, "Normal", temp.Name);
                }
            }

            //grids列的更新事件
            foreach (var gridPanel in billInfo.PbGrids)
            {
                foreach (var item in gridPanel.PbBaseTextInfos)
                {
                    ConvertExpressionGrid(item.UpdateEvent.PbImp, "GridNormal", item.Name, gridPanel.TableName);
                    ConvertExpressionGrid(item.VisibleExpressionImp, "Normal", item.Name, gridPanel.TableName);
                    ConvertExpressionGrid(item.IsReadOnlyExpressionImp, "Normal", item.Name, gridPanel.TableName);
                }
            }

            //mstform控件的更新事件
            foreach (var item in layoutForm.Items)
            {
                var temp = (PbBaseTextInfo)item;
                ConvertExpression(temp.UpdateEvent.PbImp, "Normal", temp.Name);
                ConvertExpression(temp.VisibleExpressionImp, "Normal", temp.Name);
                ConvertExpression(temp.IsMustInputExpressionImp, "Normal", temp.Name);
                ConvertExpression(temp.IsReadOnlyExpressionImp, "Normal", temp.Name);
            }


            //新增状态打开时的事件
            if (billInfo.EditAddInitEvent.PbImp.Count > 0)
            {
                ConvertExpression(billInfo.EditAddInitEvent.PbImp, "AddInit");
            }

            //保存时更新事件
            if (billInfo.BillSaveUpdateEvent.PbImp.Count > 0)
            {
                ConvertExpression(billInfo.BillSaveUpdateEvent.PbImp, "SaveUpdate");
            }

            //保存前校验事件
            if (billInfo.BillBeforeSaveEvent.PbImp.Count > 0)
            {
                ConvertExpression(billInfo.BillBeforeSaveEvent.PbImp, "BeforeSave");
            }

            return(expressions);
        }
Exemplo n.º 22
0
        /// <summary>
        /// 生成web自定义表单;
        /// </summary>
        /// <param name="buildPara"></param>
        /// <returns></returns>
        public string BuildCustomForm(BuildParameter buildPara)
        {
            string winType = "Edit";
            string ucode   = string.Empty;

            if (string.IsNullOrEmpty(buildPara.Id))
            {
                throw new Exception("Id不能为空!");
            }

            var fileName = BuildFile(buildPara.Id, ref ucode); //得到ini文件内容和帐套号
            var extJsStr = BuildExtJs(buildPara.Id);

            //p_form_m表中ucode可能不对,比如帐套是其他地方还原过来的,这里取默认帐套号
            if (!string.IsNullOrEmpty(ucode))
            {
                ucode = AppInfoBase.DbName;  //如NG0002
            }

            var type = buildPara.Type;  //web:网页自定义表单,app:移动自定义表单

            if (string.IsNullOrEmpty(type))
            {
                type = "web";
            }

            buildPara.AssemblyPath = AppDomain.CurrentDomain.BaseDirectory + "bin\\";
            buildPara.CsFilePath   = AppDomain.CurrentDomain.BaseDirectory + "CustomFormTemp\\";

            //获取设计器生成ini文件内容
            PbBillInfo billInfo = new PbBillInfo();

            billInfo = CommonParser.GetBillBase(fileName);

            // 生成前端代码;
            var clientGen = new ClientGen.Generator();

            if (type == "app")
            {
                if (!ClientGen.Generator.GenerateApp(billInfo, ref winType, ucode))
                {
                    throw new Exception("前端代码生成失败!");
                }
            }
            else
            {
                if (!ClientGen.Generator.Generate(billInfo, ref winType, extJsStr, ucode))
                {
                    throw new Exception("前端代码生成失败!");
                }
            }


            // 生成服务端代码;
            bool isGenerateCsFile = true;  //是否生成cs文件

            if (string.IsNullOrEmpty(buildPara.CsFilePath))
            {
                isGenerateCsFile = false;
            }

            if (type == "app")
            {
                if (!ServerGen.Generator.GenerateApp(billInfo, buildPara.AssemblyPath, isGenerateCsFile, buildPara.CsFilePath, ucode))
                {
                    throw new Exception("服务端代码生成失败!");
                }
            }
            else
            {
                if (!ServerGen.Generator.Generate(billInfo, buildPara.AssemblyPath, isGenerateCsFile, buildPara.CsFilePath, ucode))
                {
                    throw new Exception("服务端代码生成失败!");
                }
            }


            if (!ServerGen.Generator.Generate(billInfo, buildPara.AssemblyPath, isGenerateCsFile, buildPara.CsFilePath, ucode))
            {
                throw new Exception("服务端代码生成失败!");
            }



            //begin 增加一个菜单
            string configPath   = HttpContext.Current.Request.PhysicalApplicationPath + "\\NG3Config\\MainNavigation.xml";
            string menuName     = ucode + (type == "app" ? "aform" : "pform") + buildPara.Id + winType;
            string menuText     = menuName + " - " + billInfo.Description;
            string menuTabTitle = billInfo.Description;

            DataSet ds = new DataSet();

            ds.ReadXml(configPath);

            DataRow[] drs = ds.Tables["TreeNode"].Select("Text='" + menuText + "'");

            if (drs == null || drs.Length < 1)
            {
                DataRow dr = ds.Tables["TreeNode"].NewRow();
                dr["NavigateUrl"]      = "/Custom/SUP/" + menuName;
                dr["Text"]             = menuText;
                dr["TabTitle"]         = menuTabTitle;
                dr["UserType"]         = "system,developer,translator";
                dr["TreeNodeGroup_Id"] = "0";
                ds.Tables["TreeNode"].Rows.Add(dr);
                ds.WriteXml(configPath);
            }
            //end 增加一个菜单


            //// 返回URL链接;
            //var ip = string.IsNullOrEmpty(buildPara.Port) ? buildPara.Host : string.Format("{0}:{1}", buildPara.Host, buildPara.Port);
            //return string.Format(@"http://{0}/SUP/pform{1}List", ip, buildPara.Id);

            //返回生成业务点;
            return(string.Format(@"自定义表单pform{0}生成成功", buildPara.Id));
        }
Exemplo n.º 23
0
        /// <summary>
        /// 生成PC表单服务端dll;
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="assemblyPath"></param>
        /// <param name="isGenerateCsFile"></param>
        /// <param name="csFilePath"></param>
        /// <returns></returns>
        public static bool Generate(PbBillInfo billInfo, string assemblyPath, bool isGenerateCsFile, string csFilePath, string ucode)
        {
            try
            {
                //参数设置
                var templateInfo = new TemplateInfo
                {
                    NameSpacePrefix = "SUP.CustomForm",
                    ClassName       = ucode + billInfo.Name,                            //NG0001pform0000000008
                    PForm           = billInfo.Name,                                    //pform0000000008
                    EForm           = billInfo.Name.Replace("pform", "EFORM"),          //EFORM0000000008
                    QForm           = billInfo.Name.Replace("pform", "w_eform_p_list"), //w_eform_p_list0000600008
                    TableMaster     = billInfo.HeadInfo.TableName,
                    Title           = billInfo.Description,
                    SqlList         = billInfo.PbList.Sql,
                    SqlMaster       = billInfo.HeadInfo.Sql
                };

                foreach (PbGridInfo grid in billInfo.PbGrids)
                {
                    var info = new TemplateDetailInfo();
                    info.Name       = grid.Name;
                    info.Sql        = grid.Sql;
                    info.TableName  = grid.TableName;
                    info.Subtotal   = grid.Subtotal;
                    info.Groupfield = grid.Groupfield;
                    templateInfo.DetailInfoList.Add(info);

                    //grids中生成代码转名称相关代码
                    foreach (var helpControl in grid.PbBaseTextInfos)
                    {
                        //物资不需要代码转名称,单独处理
                        if (helpControl.ColumnInfo.ColumnName == "res_code")
                        {
                            continue;
                        }

                        if (helpControl.ControlType.ToString() == "DataHelpEdit")
                        {
                            var helpEdit = (PbDataHelpEditInfo)helpControl;

                            var codeToNameInfo = new CodeToNameInfo
                            {
                                TableName   = grid.TableName,
                                CodeName    = helpEdit.ColumnInfo.ColumnName,
                                HelpId      = helpEdit.DataHelpId,
                                MultiSelect = helpEdit.MultiSelect
                            };

                            templateInfo.CodeToNameGrid.Add(codeToNameInfo);
                        }
                    }
                }

                //List中生成代码转名称相关代码
                foreach (var helpControl in billInfo.PbList.PbBaseTextInfos)  //mod by ljy 2016.12.08 billInfo.HeadInfo.PbColumns 改成 billInfo.PbList.PbBaseTextInfos
                {
                    if (helpControl.ControlType.ToString() == "DataHelpEdit")
                    {
                        var helpEdit       = (PbDataHelpEditInfo)helpControl;
                        var codeToNameInfo = new CodeToNameInfo
                        {
                            TableName   = billInfo.PbList.TableName,
                            CodeName    = helpEdit.ColumnInfo.ColumnName,
                            HelpId      = helpEdit.DataHelpId,
                            MultiSelect = helpEdit.MultiSelect
                        };

                        templateInfo.CodeToNameList.Add(codeToNameInfo);
                    }
                }

                //图片控件
                foreach (PbPictureboxInfo picturebox in billInfo.HeadInfo.PbPictureboxInfos)
                {
                    templateInfo.BitmapNameList.Add(picturebox.Name);
                }

                if (billInfo.AsrGridInfo.Visible || billInfo.AsrGridInfo.PbBaseTextInfos.Count > 0)
                {
                    templateInfo.HasAsrGrid = "1";
                }

                var controllerTemplate = new ControllerTemplate(templateInfo);

                if (isGenerateCsFile)  //生成代码文件
                {
                    string path = csFilePath + templateInfo.ClassName;
                    controllerTemplate.WriteEx(ref path);
                    NG3.Compile.Compiler.CompileFromFile(path, assemblyPath, true, templateInfo.NameSpacePrefix + "." + templateInfo.ClassName + ".Controller");
                }
                else  //不生成代码文件
                {
                    string[] codeArray = new string[] { controllerTemplate.WriteEx() };
                    NG3.Compile.Compiler.CompileFromCode(codeArray, assemblyPath, templateInfo.NameSpacePrefix + "." + templateInfo.ClassName + ".Controller");
                }
            }
            catch (System.Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return(true);
        }
Exemplo n.º 24
0
 /// <summary>
 /// 生成带cs文件的dll程序集;
 /// </summary>
 /// <param name="fileName"></param>
 /// <param name="assemblyPath">生成程序集路径;</param>
 /// <param name="generatedCsFilePath">.cs文件生成路径;</param>
 /// <returns></returns>
 public static bool Generate(PbBillInfo billInfo, string assemblyPath, string generatedCsFilePath)
 {
     return(Generate(billInfo, assemblyPath, true, generatedCsFilePath, string.Empty));
 }
Exemplo n.º 25
0
        public PbEditFormParser(PbBillInfo billInfo)
        {
            FieldSets  = GetFieldSetInfo(billInfo);
            GridPanels = GetGridPanel();
            LayoutForm = GetFormInfo(billInfo);

            Expressions = GetExpressions(billInfo);
            TB          = GetEditToolbar(billInfo);
            tabinfos    = GetTabInfos(billInfo);

            FieldSetBlobdoc = GetBlobdoc(billInfo);
            GetPictureBoxs(billInfo);
            GetAsrGrid(billInfo);
            GetWfGrid(billInfo);

            //汇总form和fieldset上所有列名
            foreach (var item in LayoutForm.AllFields)
            {
                if (!LayoutForm.ColumnNames.Contains(item.Name))
                {
                    LayoutForm.ColumnNames.Add(item.Name);
                }
            }
            foreach (var fieldset in FieldSets)
            {
                foreach (var item in fieldset.AllFields)
                {
                    if (!LayoutForm.ColumnNames.Contains(item.Name))
                    {
                        LayoutForm.ColumnNames.Add(item.Name);
                    }
                }
            }


            //计算表体游离panel数量,包括grid,tab,金格,进度控件等
            int tempCount = 0;

            for (int i = 0; i < GridPanels.Count; i++)
            {
                if (!GridPanels[i].IsInTab)
                {
                    tempCount++;
                }
            }

            if (tabinfos.Count == 1)
            {
                tempCount++;
            }

            if (billInfo.HasBlobdoc == "1")
            {
                tempCount++;
            }

            if (billInfo.HasEppocx == "1")
            {
                tempCount++;
            }

            if (billInfo.AsrGridInfo.Visible)
            {
                tempCount++;
            }

            if (billInfo.WfGridInfo.Visible)
            {
                tempCount++;
            }

            billInfo.BodyCmpCount = tempCount;


            //设置grid和tab的布局region
            SortedList <int, string> sortlist = new SortedList <int, string>(); //游离panel排序

            if (tabinfos.Count > 0)                                             //有tab情况下,金格等控件在tab中
            {
                sortlist.Add(tabinfos[0].YPos, "tabPanel0");
            }
            for (int i = 0; i < GridPanels.Count; i++)
            {
                if (!GridPanels[i].IsInTab)
                {
                    sortlist.Add(GridPanels[i].Y, GridPanels[i].TableName);
                }
            }

            if (sortlist.Count > 0)
            {
                int maxY = Convert.ToInt32(sortlist.Last().Key);
                if (tabinfos.Count > 0)  //有tab情况下,金格等控件在tab中
                {
                    //根据组件y坐标来设置region
                    if (tabinfos[0].YPos == maxY)
                    {
                        tabinfos[0].Region = "center";
                    }
                    else
                    {
                        tabinfos[0].Region = "north";
                    }
                }

                for (int i = 0; i < GridPanels.Count; i++)
                {
                    if (!GridPanels[i].IsInTab)
                    {
                        if (GridPanels[i].Y == maxY && billInfo.HasBlobdoc != "1" && billInfo.HasEppocx != "1")
                        {
                            GridPanels[i].Region = "center";
                        }
                        else
                        {
                            GridPanels[i].Region = "north";
                        }
                    }
                }
            }
        }
Exemplo n.º 26
0
 /// <summary>
 /// 生成dll程序集;
 /// </summary>
 /// <param name="fileName"></param>
 /// <param name="assemblyPath">生成程序集路径;</param>
 /// <returns></returns>
 public static bool Generate(PbBillInfo billInfo, string assemblyPath)
 {
     return(Generate(billInfo, assemblyPath, false, string.Empty, string.Empty));
 }