private static void SetHelpId(PbDataHelpEditInfo pbDataHelpEditInfo, IDictionary <string, string> dddwSourceDic) { if (dddwSourceDic.ContainsKey(pbDataHelpEditInfo.FullName)) { //设计器上的自定义: p_form0000000012_m.userdefine_1 = 60041,0 //设计器上的通用帮助: p_form0000000012_m.userhelp_1=pms3.project_table,1 //上面两种都存在ini上,格式就是后面的例子 //设计器上拖出来的自定义和通用帮助列,可手动设置数据源,数据源前者支持customhelp,后者是后面改造的支持richhelp string helpidStr = string.Empty; string helpSource = dddwSourceDic[pbDataHelpEditInfo.FullName]; if (helpSource.IndexOf(",") > 0) { string[] helpidArray = helpSource.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); pbDataHelpEditInfo.DataHelpId = helpidArray[0]; } else { pbDataHelpEditInfo.DataHelpId = helpSource; } } else { //设计器上的供应商、部门和班组等帮助列 //不能手动赋数据源,helpid根据字段名从配置文件NG3Config\\EFormHelp.xml去取,数据源来自richhelp DataRow[] drs = HelpDac.XmlHelpDT.Select("Id='" + pbDataHelpEditInfo.Name + "'"); if (drs.Length > 0) { pbDataHelpEditInfo.DataHelpId = drs[0]["HelpId"].ToString(); } } }
public static BaseField GetHelp(PbBaseControlInfo pbCtl, DataRow dr) { PbDataHelpEditInfo pbDataHelp = (PbDataHelpEditInfo)pbCtl; HelpField ngHelp = new HelpField(); ngHelp.ID = pbDataHelp.Id; ngHelp.Name = pbDataHelp.Name; ngHelp.FieldLabel = pbDataHelp.LeftText; ngHelp.MustInput = pbDataHelp.IsMustInput; ngHelp.XType = "ngHelp"; return(ngHelp); }
/// <summary> /// pb 自定义表单定义的帮助 /// </summary> /// <param name="pbCtl"></param> /// <returns></returns> public static BaseField GetCustomHelp(PbBaseControlInfo pbCtl) { PbDataHelpEditInfo pbDataHelp = (PbDataHelpEditInfo)pbCtl; BaseField baseField = null; DataTable dt = SUP.CustomForm.DataAccess.Common.GetHelpInfo(pbDataHelp.DataHelpId); //这时候需要去数据库查 helpid if (dt != null) { if (dt.Rows[0]["fromsql"].Equals("1")) //弹出帮助类型的 { CustomHelpField ngCustomFormHelp = new CustomHelpField(); ngCustomFormHelp.ID = pbDataHelp.Id; ngCustomFormHelp.Name = pbDataHelp.Name; ngCustomFormHelp.FieldLabel = pbDataHelp.LeftText; ngCustomFormHelp.MustInput = pbDataHelp.IsMustInput; ngCustomFormHelp.XType = "ngCustomHelp"; ngCustomFormHelp.HelpID = pbDataHelp.DataHelpId; baseField = ngCustomFormHelp; //ngCustomFormHelp.ListHeadTexts = dt.Rows[0]["datetitle"].ToString() + "," + // dt.Rows[0]["viewtitle"].ToString(); //ngCustomFormHelp.ValueField = dt.Rows[0]["col_data"].ToString(); //ngCustomFormHelp.DisplayField = dt.Rows[0]["col_view"].ToString(); //ngCustomFormHelp.ListFields = dt.Rows[0]["col_data"].ToString() + "," + // dt.Rows[0]["col_view"].ToString(); } else { //下拉式两列的帮助 SelectField select = new SelectField(); select.XType = "ngSelect"; foreach (DataRow info in dt.Rows) { select.Options.Add(string.Format(@"text:'{0}',value:'{1}'", info["base_code"].ToString(), info["base_name"].ToString())); } baseField = select; } } return(baseField); }
public static NGCommonHelp GetRichHelp(PbBaseControlInfo pbCtl, DataRow dr) { PbDataHelpEditInfo pbDataHelp = (PbDataHelpEditInfo)pbCtl; NGCommonHelp ngRichHelp = new NGCommonHelp(); string xtypeStr = string.Empty; DataRow[] xmlDrs = HelpDac.XmlHelpDT.Select("Id='" + pbDataHelp.Name + "'"); if (xmlDrs.Length > 0) { xtypeStr = xmlDrs[0]["xtype"].ToString().Trim(); if (xtypeStr == "WbsHelpField" || xtypeStr == "CbsHelpField") { ngRichHelp.OutFilter = "pc"; } } //组件类型名不为空,说明是组件,组件ValueField等从xml文件取 if (!string.IsNullOrEmpty(xtypeStr)) { ngRichHelp.ValueField = xmlDrs[0]["Code"].ToString(); ngRichHelp.DisplayField = xmlDrs[0]["Name"].ToString(); } else { //project_table.phid,如果带表名则去掉表名 var codefield = dr["codefield"].ToString().Trim(); var namefield = dr["namefield"].ToString().Trim(); if (codefield.IndexOf(".") > 0) { codefield = codefield.Substring(codefield.IndexOf(".") + 1).Trim(); } if (namefield.IndexOf(".") > 0) { namefield = namefield.Substring(namefield.IndexOf(".") + 1).Trim(); } ngRichHelp.ValueField = codefield; ngRichHelp.DisplayField = namefield; } ngRichHelp.ID = pbDataHelp.Id; ngRichHelp.Name = pbDataHelp.Name; ngRichHelp.FieldLabel = pbDataHelp.LeftText; ngRichHelp.MustInput = pbDataHelp.IsMustInput; ngRichHelp.XType = "ngRichHelp"; ngRichHelp.CmpName = xtypeStr; ngRichHelp.Visible = pbDataHelp.Visible; ngRichHelp.MustInput = pbDataHelp.IsMustInput; ngRichHelp.Protect = pbDataHelp.IsProtect; ngRichHelp.Helpid = dr["helpid"].ToString(); ngRichHelp.ListFields = ngRichHelp.ValueField + "," + ngRichHelp.DisplayField; ngRichHelp.ListHeadTexts = "代码,名称"; ngRichHelp.MultiSelect = pbDataHelp.MultiSelect; ngRichHelp.FieldStyle = GetRgb(pbDataHelp.TextColor); ngRichHelp.LabelStyle = GetRgb(pbDataHelp.LabelTextColor); return(ngRichHelp); }
public static NGCommonHelp GetCustomFormHelp(PbBaseControlInfo pbCtl) { PbDataHelpEditInfo pbDataHelp = (PbDataHelpEditInfo)pbCtl; NGCommonHelp ngCustomFormHelp = new NGCommonHelp(); ngCustomFormHelp.ID = pbDataHelp.Id; ngCustomFormHelp.Name = pbDataHelp.Name; ngCustomFormHelp.FieldLabel = pbDataHelp.LeftText; ngCustomFormHelp.MustInput = pbDataHelp.IsMustInput; ngCustomFormHelp.XType = "ngCustomFormHelp"; ngCustomFormHelp.Visible = pbDataHelp.Visible; ngCustomFormHelp.MustInput = pbDataHelp.IsMustInput; ngCustomFormHelp.Protect = pbDataHelp.IsProtect; ngCustomFormHelp.Helpid = pbDataHelp.DataHelpId; ngCustomFormHelp.OutFilter = ""; ngCustomFormHelp.MultiSelect = pbDataHelp.MultiSelect; ngCustomFormHelp.FieldStyle = GetRgb(pbDataHelp.TextColor); ngCustomFormHelp.LabelStyle = GetRgb(pbDataHelp.LabelTextColor); //查帮助信息 DataTable dt = SUP.CustomForm.DataAccess.Common.GetHelpInfo(ngCustomFormHelp.Helpid); //这时候需要去数据库查 helpid if (dt != null && dt.Rows.Count > 0) { if (dt.Rows[0]["fromsql"].Equals("1")) //弹出帮助类型的 { ngCustomFormHelp.ValueField = dt.Rows[0]["col_data"].ToString(); ngCustomFormHelp.DisplayField = dt.Rows[0]["col_view"].ToString(); ngCustomFormHelp.ListFields = dt.Rows[0]["col_data"].ToString() + "," + dt.Rows[0]["col_view"].ToString(); ngCustomFormHelp.ListHeadTexts = dt.Rows[0]["datetitle"].ToString() + "," + dt.Rows[0]["viewtitle"].ToString(); } else { //下拉式两列的帮助 ngCustomFormHelp.XType = "ngComboBox"; ngCustomFormHelp.QueryMode = "local"; ngCustomFormHelp.ValueField = "code"; ngCustomFormHelp.DisplayField = "name"; ngCustomFormHelp.ListFields = "code,name"; ngCustomFormHelp.ListHeadTexts = "代码,名称"; foreach (DataRow info in dt.Rows) { ngCustomFormHelp.Data.Add(string.Format(@"code:'{0}',name:'{1}'", info["phid"].ToString(), info["base_name"].ToString())); } } //--设置sql中的过滤填充值 string sql = dt.Rows[0]["sql_str"].ToString() + " "; string outfilter = string.Empty; //得到sql中:和空格之间的串 string start = @"\:"; string end = @"\ "; Regex rg = new Regex("(?<=(" + start + "))[.\\s\\S]*?(?=(" + end + "))", RegexOptions.Multiline | RegexOptions.Singleline); MatchCollection macths = rg.Matches(sql); int bracketPos = 0; string tempValue = string.Empty; if (macths.Count > 0) { for (int i = 0; i < macths.Count; i++) { tempValue = macths[i].Value; //去掉可能存在的小括号符 do { tempValue = tempValue.Replace(")", " "); bracketPos = tempValue.IndexOf(")"); } while (bracketPos != (-1)); outfilter += ";" + tempValue.Trim(); } outfilter = outfilter.Substring(1, outfilter.Length - 1); //去掉第一个多余的分号 ngCustomFormHelp.OutFilter = outfilter; } //--end } else { ngCustomFormHelp.ValueField = "code"; ngCustomFormHelp.DisplayField = "name"; ngCustomFormHelp.ListFields = "code,name"; ngCustomFormHelp.ListHeadTexts = "代码,名称"; } return(ngCustomFormHelp); }
//ParseBillHead 调用 public static IList <PbBaseTextInfo> ToPbColumnsMetadata(DwInfo dwInfo, string dwAuthName, IDictionary <string, string> dddwSourceDic, string titlename, Dictionary <string, string> colrefdic, IDictionary <string, string> textareadic, IDictionary <string, string> colspandic, IDictionary <string, string> multiselectdic) { IList <PbBaseTextInfo> pbBaseTextInfos = new List <PbBaseTextInfo>(); //普通列 foreach (DwColumn dc in dwInfo.DwColumns) { //如果控件宽度或高度为0,该控件不加入列表 if (dc.Height == 0 || dc.Width == 0) { continue; } DwDbColumn dwDbColumn = dwInfo.GetDwDbColumnByName(dc.Name); if (dwDbColumn == null) { continue; } //if (sumdic != null && sumdic.Count() != 0) //{ // if (sumdic.ContainsKey(dc.Name)) // { // dwDbColumn.SummaryType = sumdic[dc.Name]; // } //} DwText dwText = dwInfo.GetDwTextByName(dc.Name); //xkq. 2016-12-8 寻找[window]中ref中是否有对应text if (colrefdic != null && colrefdic.Count() != 0) { if (dwText == null || dwText.Name == null) { if (colrefdic.ContainsKey(dc.Name)) //有关联的标签和输入框 { string textname = colrefdic[dc.Name]; if (!string.IsNullOrEmpty(textname)) { dwText = dwInfo.GetDwTextByName1(textname); } } else //单独的标签 { dc.SingleText = true; } } } //add by ljy 2017.07.13 找出类型时textarea的字段 if (textareadic != null && textareadic.Count() != 0) { if (textareadic.ContainsKey(dc.Name)) { dc.TextArea = true; } } //add by ljy 2017.07.14 设置所有列的列占位数 if (colspandic != null && colspandic.Count() != 0) { if (colspandic.ContainsKey(dc.Name)) //有关联的标签和输入框 { dc.ColSpan = Convert.ToInt32(colspandic[dc.Name]); } } //add by ljy 2017.11.03 找出复选帮助字段 if (multiselectdic != null && multiselectdic.Count() != 0) { if (multiselectdic.ContainsKey(dwAuthName + "." + dc.Name)) { dc.MultiSelect = true; } } if (dc.Name.Equals("res_code")) { dwDbColumn.DataType = "DataHelpEdit"; PbDataHelpEditInfo pbDataHelpEditInfo = new PbDataHelpEditInfo(); CommonAssignment(pbDataHelpEditInfo, dwDbColumn, dwText, dc, SqlDbType.NVarChar, dwAuthName); DataRow[] drs = HelpDac.XmlHelpDT.Select("Id='" + pbDataHelpEditInfo.Name + "'"); if (drs.Length > 0)//系统内置的通用帮助 { pbDataHelpEditInfo.DataHelpId = drs[0]["HelpId"].ToString(); } pbBaseTextInfos.Add(pbDataHelpEditInfo); continue; } if (dc.Name.Equals("c_name")) { continue; } //if(dc.Name.Equals("msunit")) //{ // sqlDbType = SqlDbType.NVarChar; // dc.ControlType = DwControlType.TextEdit; //} SqlDbType sqlDbType = DwDbTypeConvert.ToSqlDbType(dwDbColumn.DataType); switch (sqlDbType) { case SqlDbType.NVarChar: switch (dc.ControlType) { case DwControlType.CheckBoxEdit: PbCheckboxInfo checkboxInfo = new PbCheckboxInfo(); CommonAssignment(checkboxInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(checkboxInfo); break; case DwControlType.RedioBoxEdit: PbRadioboxInfo pbRadioboxInfo = new PbRadioboxInfo(); CommonAssignment(pbRadioboxInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbRadioboxInfo.PbPairValueInfos = ConvertToPairValueInfo(dwDbColumn.Values); pbBaseTextInfos.Add(pbRadioboxInfo); break; case DwControlType.ComboBoxEdit: PbComboboxInfo pbComboboxInfo = new PbComboboxInfo(); CommonAssignment(pbComboboxInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbComboboxInfo.PbComboboxValueInfos = ConvertToPairValueInfo(dwDbColumn.Values); pbBaseTextInfos.Add(pbComboboxInfo); break; case DwControlType.DataHelpEdit: PbDataHelpEditInfo pbDataHelpEditInfo = new PbDataHelpEditInfo(); CommonAssignment(pbDataHelpEditInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); SetHelpId(pbDataHelpEditInfo, dddwSourceDic); //设置helpid pbBaseTextInfos.Add(pbDataHelpEditInfo); break; case DwControlType.RichTextEdit: PbRichTextInfo pbRichTextInfo = new PbRichTextInfo(); CommonAssignment(pbRichTextInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(pbRichTextInfo); break; case DwControlType.TextEdit: PbTextInfo textInfo = new PbTextInfo(); CommonAssignment(textInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(textInfo); break; default: PbTextInfo textInfo1 = new PbTextInfo(); CommonAssignment(textInfo1, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(textInfo1); break; } break; case SqlDbType.DateTime: PbDateTimeTextInfo dateTimeTextInfo = new PbDateTimeTextInfo(); CommonAssignment(dateTimeTextInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(dateTimeTextInfo); break; case SqlDbType.Int: switch (dc.ControlType) { case DwControlType.TextEdit: PbIntTextInfo intTextInfo = new PbIntTextInfo(); CommonAssignment(intTextInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(intTextInfo); break; case DwControlType.CheckBoxEdit: PbCheckboxInfo checkboxInfo = new PbCheckboxInfo(); CommonAssignment(checkboxInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(checkboxInfo); break; case DwControlType.RedioBoxEdit: PbRadioboxInfo pbRadioboxInfo = new PbRadioboxInfo(); CommonAssignment(pbRadioboxInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(pbRadioboxInfo); break; case DwControlType.ComboBoxEdit: PbComboboxInfo pbComboboxInfo = new PbComboboxInfo(); CommonAssignment(pbComboboxInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbComboboxInfo.PbComboboxValueInfos = ConvertToPairValueInfo(dwDbColumn.Values); pbBaseTextInfos.Add(pbComboboxInfo); break; case DwControlType.DataHelpEdit: PbDataHelpEditInfo pbDataHelpEditInfo = new PbDataHelpEditInfo(); CommonAssignment(pbDataHelpEditInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); SetHelpId(pbDataHelpEditInfo, dddwSourceDic); //设置helpid pbBaseTextInfos.Add(pbDataHelpEditInfo); break; case DwControlType.RichTextEdit: PbRichTextInfo pbRichTextInfo = new PbRichTextInfo(); CommonAssignment(pbRichTextInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(pbRichTextInfo); break; default: PbIntTextInfo intTextInfo1 = new PbIntTextInfo(); CommonAssignment(intTextInfo1, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(intTextInfo1); break; } break; case SqlDbType.Decimal: switch (dc.ControlType) { case DwControlType.CheckBoxEdit: PbCheckboxInfo checkboxInfo = new PbCheckboxInfo(); CommonAssignment(checkboxInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(checkboxInfo); break; case DwControlType.RedioBoxEdit: PbRadioboxInfo pbRadioboxInfo = new PbRadioboxInfo(); CommonAssignment(pbRadioboxInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbRadioboxInfo.PbPairValueInfos = ConvertToPairValueInfo(dwDbColumn.Values); pbBaseTextInfos.Add(pbRadioboxInfo); break; case DwControlType.ComboBoxEdit: PbComboboxInfo pbComboboxInfo = new PbComboboxInfo(); CommonAssignment(pbComboboxInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbComboboxInfo.PbComboboxValueInfos = ConvertToPairValueInfo(dwDbColumn.Values); pbBaseTextInfos.Add(pbComboboxInfo); break; case DwControlType.DataHelpEdit: PbDataHelpEditInfo pbDataHelpEditInfo = new PbDataHelpEditInfo(); CommonAssignment(pbDataHelpEditInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); SetHelpId(pbDataHelpEditInfo, dddwSourceDic); //设置helpid pbBaseTextInfos.Add(pbDataHelpEditInfo); break; case DwControlType.RichTextEdit: PbRichTextInfo pbRichTextInfo = new PbRichTextInfo(); CommonAssignment(pbRichTextInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(pbRichTextInfo); break; case DwControlType.TextEdit: PbTextInfo textInfo = new PbTextInfo(); CommonAssignment(textInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(textInfo); break; default: PbDecimalTextInfo pbDecimalTextInfo = new PbDecimalTextInfo(); CommonAssignment(pbDecimalTextInfo, dwDbColumn, dwText, dc, sqlDbType, dwAuthName); pbBaseTextInfos.Add(pbDecimalTextInfo); break; } break; default: break; } } //按钮列 foreach (DwButton db in dwInfo.DwButtons) { //如果控件宽度或高度为0,该控件不加入列表 if (db.Height == 0 || db.Width == 0) { continue; } PbButtonInfo buttonInfo = new PbButtonInfo(); buttonInfo.Name = db.Name; buttonInfo.FullName = db.Name; buttonInfo.LeftText = db.Text; buttonInfo.Height = db.Height; buttonInfo.Width = db.Width; buttonInfo.TextColor = db.Color; buttonInfo.Visible = db.Visible; buttonInfo.XPos = db.XPos; buttonInfo.YPos = db.YPos; buttonInfo.LabelWidth = db.Width; pbBaseTextInfos.Add(buttonInfo); } //纯文本列 foreach (DwText dt in dwInfo.DwTexts) { bool isTitle = false; //如果控件宽度或高度为0,该控件不加入列表 if (dt.Height == 0 || dt.Width == 0) { continue; } //存在于列标签和列单元格的关联关系中,说明不是独立标签,是作为文本框的标签,则跳过 if (colrefdic != null && colrefdic.ContainsValue(dt.Name)) { continue; } if (dt.Name.Equals(titlename) && !string.IsNullOrEmpty(titlename)) { isTitle = true; //该标签作为标题 } else { //name最后两位不是"_t"的为独立标签 if (dt.Name.Substring(dt.Name.Length - 2, 2) == "_t") { continue; } } PbLabelInfo labelInfo = new PbLabelInfo(); //add by ljy 2018.05.21 设置所有列的列占位数 if (colspandic != null && colspandic.Count() != 0) { if (colspandic.ContainsKey(dt.Name)) //有关联的标签和输入框 { labelInfo.ColSpan = Convert.ToInt32(colspandic[dt.Name]); } } labelInfo.IsTitle = isTitle; labelInfo.Name = dt.Name; labelInfo.FullName = dt.Name; labelInfo.LeftText = dt.Text; labelInfo.Height = dt.Height; labelInfo.Width = dt.Width; labelInfo.TextColor = dt.Color; labelInfo.LabelTextColor = dt.LabelTextColor; labelInfo.Visible = dt.Visible; labelInfo.XPos = dt.XPos; labelInfo.YPos = dt.YPos; labelInfo.Font = dt.Font; labelInfo.Align = dt.Align; labelInfo.LabelWidth = dt.Width; pbBaseTextInfos.Add(labelInfo); } return(pbBaseTextInfos); }