//获取二维数组的字段信息 private List <List <ExtControlBase> > GetFieldsRows(Dictionary <int, SortedList <int, PbBaseControlInfo> > dic, FieldSet fset, TableLayoutForm lForm) { List <List <ExtControlBase> > fieldRows = new List <List <ExtControlBase> >(); ExtControlBase extControl = null; foreach (var item in dic) { List <ExtControlBase> list = new List <ExtControlBase>(); foreach (var control in item.Value) { extControl = ControlConverter.ConvertToExtControl(control.Value); list.Add(extControl); if (fset != null) { fset.AllFields.Add(extControl); } if (lForm != null) { lForm.AllFields.Add(extControl); } } if (list.Count > 0) { fieldRows.Add(list); } } return(fieldRows); }
//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)); } } }
public static List <ExtGridColumn> GetListColumns(IList <PbBaseTextInfo> pbcontrols) { SortedList <int, PbBaseControlInfo> list = new SortedList <int, PbBaseControlInfo>(); List <ExtGridColumn> columns = new List <ExtGridColumn>(); foreach (PbBaseControlInfo item in pbcontrols) { if (list.ContainsKey(item.XPos)) //如果x坐标重复,则跳过 //0000000038 这里有重复的 { continue; } list.Add(item.XPos, item);//以x坐标排序 } foreach (KeyValuePair <int, PbBaseControlInfo> element in list) { PbBaseTextInfo textInfo = element.Value as PbBaseTextInfo; if (textInfo != null) { ExtGridColumn col = new ExtGridColumn(); col.Header = textInfo.LeftText; col.DataIndex = textInfo.Name; col.Datatype = SqlTypeConverter.ConvertToExtControl(textInfo.ColumnInfo.ColumnDataType); ExtControlBase column = ControlConverter.ConvertToExtControl(textInfo); //转换下xtype的类型; col.editor.XType = column.XType; if (col.editor.XType == "ngRadio") { var temp = column as NGRadio; col.editor.Items = temp.Items; } columns.Add(col); } } return(columns); }
//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); }
public static List <ExtGridColumn> GetListColumns(IList <PbBaseTextInfo> pbcontrols) { SortedList <int, PbBaseControlInfo> list = new SortedList <int, PbBaseControlInfo>(); List <ExtGridColumn> columns = new List <ExtGridColumn>(); foreach (PbBaseControlInfo item in pbcontrols) { if (list.ContainsKey(item.XPos)) //如果x坐标重复,则跳过 //0000000038 这里有重复的 { continue; } list.Add(item.XPos, item);//以x坐标排序 } foreach (KeyValuePair <int, PbBaseControlInfo> element in list) { PbBaseTextInfo textInfo = element.Value as PbBaseTextInfo; if (textInfo != null) { ExtGridColumn col = new ExtGridColumn(); if (textInfo.Name.Equals("t_sum")) { continue; } col.Header = textInfo.LeftText; col.DataIndex = textInfo.Name; col.Datatype = SqlTypeConverter.ConvertToExtControl(textInfo.ColumnInfo.ColumnDataType); col.DefaultValue = textInfo.DefaultValue; col.Width = textInfo.Width; //Grid每一列的宽度 col.RgbColor = ControlConverter.GetRgb(textInfo.Color); //grid列的字体颜色 col.BackgroundColor = ControlConverter.GetRgb(textInfo.backgroundColor); //grid列的背景颜色 ExtControlBase column = ControlConverter.ConvertToExtControl(textInfo); //转换下xtype的类型; col.Protect = column.Protect; col.MustInput = column.MustInput; col.Format = column.Format; col.EditMask = column.EditMask; col.editor.XType = column.XType; if (col.editor.XType == "ngCustomFormHelp" || col.editor.XType == "ngRichHelp") { var temp = column as NGHelpBase; if (temp.Helpid == "itemdata") { col.DataIndex = "itemid"; col.Header = "物资"; col.editor.ValueField = "phid"; col.editor.DisplayField = "itemname"; col.editor.ListFields = "itemid,c_name,spec,msname"; col.editor.ListHeadTexts = "编码,名称,规格,单位"; col.editor.Helpid = temp.Helpid; } else { col.editor.ValueField = temp.ValueField; col.editor.DisplayField = temp.DisplayField; col.editor.ListFields = temp.ListFields; col.editor.ListHeadTexts = temp.ListHeadTexts; col.editor.CmpName = temp.CmpName; col.editor.OutFilter = temp.OutFilter; col.editor.Helpid = temp.Helpid; col.editor.MultiSelect = temp.MultiSelect; } } else if (col.editor.XType == "ngComboBox") { if (column is NGComboBox) { NGComboBox temp = column as NGComboBox; col.editor.QueryMode = temp.QueryMode; col.editor.Data = temp.Data; } else if (column is NGCommonHelp) { NGCommonHelp temp = column as NGCommonHelp; col.editor.QueryMode = temp.QueryMode; col.editor.Data = temp.Data; } } else if (col.editor.XType == "ngRadio") { var temp = column as NGRadio; col.editor.Items = temp.Items; } columns.Add(col); } } return(columns); }