// Methods public KEEPERBumpAnalysisFields(string ID, KEEPERBumpTypeField BumpFields, FieldAppearance LayoutInfoAppearance, bool IsShowField, bool IsBumpField) { this.ID = ID; this.LayoutInfoAppearance = LayoutInfoAppearance; this.IsShowField = IsShowField; this.IsBumpField = IsBumpField; this.BumpFields = BumpFields; }
private static FieldAppearance GetNextEditFieldAp(IDynamicFormView view, FieldAppearance fieldAp, int iRow) { FieldAppearance nextFieldAp = null; if (fieldAp != null) { EntryEntityAppearance entryEntityAp = view.LayoutInfo.GetEntryEntityAppearance(fieldAp.EntityKey); if (entryEntityAp != null) { DynamicObject rowData = view.Model.GetEntityDataObject(entryEntityAp.Entity, iRow); int iStartFindPos = entryEntityAp.Layoutinfo.Appearances.IndexOf(fieldAp); if (iStartFindPos >= 0) { for (int i = iStartFindPos + 1; i < entryEntityAp.Layoutinfo.Appearances.Count; i++) { nextFieldAp = entryEntityAp.Layoutinfo.Appearances[i] as FieldAppearance; if (nextFieldAp == null) { continue; } //跳过不可见或不可编辑的字段 if (nextFieldAp.IsLocked(view.OpenParameter.Status) == true || nextFieldAp.IsVisible(view.OpenParameter.Status) == false) { continue; } //单元格锁定也不填充 if (rowData != null && view.StyleManager.GetEnabled(fieldAp, rowData) == false) { continue; } break; } } } } return(nextFieldAp); }
public override void OnSetLayoutInfo(SetLayoutInfoArgs e) { // 用来放置动态创建字段的容器面板:需提前在单据上设计好此面板 Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel.Container parentPanel = this.View.GetControl <Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel.Container>("F_WJ_Panel"); // 布局对象:需要把新字段加入到布局对象中,然后再把布局对象添加到面板中 panelLayout = new LayoutInfo(); // 取模板字段的外观布局对象,仿照外观 modelTextFieldApp = this.View.LayoutInfo.GetFieldAppearance("FModelText"); modelF8FieldApp = this.View.LayoutInfo.GetFieldAppearance("FModelF8") as BaseDataFieldAppearance; modelDecimalFieldApp = this.View.LayoutInfo.GetFieldAppearance("FModelDecimal") as DecimalFieldAppearance; modelAssistantFieldApp = this.View.LayoutInfo.GetFieldAppearance("FModelAssistant") as AssistantFieldAppearance; presenter.LayoutByExtensons(); // 把layout加入到容器面板中 parentPanel.AddControls(panelLayout); e.LayoutInfo = _currLayoutInfo; e.BillLayoutInfo = _currLayoutInfo; this.View.SendDynamicFormAction(this.View); base.OnSetLayoutInfo(e); }
public void SetAppLayout(int top, int left, string key, string name, string type, int tableIdx) { int lcid = this.Context.UserLocale.LCID; // 基于模板字段的外观,产生出新字段的外观 FieldAppearance newFldApp = null; switch (type) { case "F8": newFldApp = (BaseDataFieldAppearance)ObjectUtils.CreateCopy(modelF8FieldApp); break; case "Text": newFldApp = (TextFieldAppearance)ObjectUtils.CreateCopy(modelTextFieldApp); break; case "Decimal": newFldApp = (DecimalFieldAppearance)ObjectUtils.CreateCopy(modelDecimalFieldApp); break; case "Assistant": newFldApp = (AssistantFieldAppearance)ObjectUtils.CreateCopy(modelAssistantFieldApp); break; default: throw new Exception("没有找到type"); } newFldApp.Key = key; newFldApp.EntityKey = "FBillHead"; newFldApp.Caption = new LocaleValue(name); newFldApp.Field = this.View.BusinessInfo.GetField(key); newFldApp.Top = new LocaleValue(top.ToString(), lcid); newFldApp.Left = new LocaleValue(left.ToString(), lcid); //newFldApp.Tabindex = modelTextFieldApp.Tabindex + tableIdx + 1; // 必须清除字段的容器属性,否则生成的控件,不能挂到指定的容器面板上 newFldApp.Container = ""; _currLayoutInfo.Add(newFldApp); // 把新字段外观,同步加入到容器面板的布局对象中 panelLayout.Add(newFldApp); }
public BumpAnalysisResultEntrity Get_Bumpfields(string FormID, FormMetadata entitryMeta) { BumpAnalysisResultEntrity entrity = new BumpAnalysisResultEntrity(); entrity.BumpAnalysisFields = new Dictionary <string, BumpAnalysisFields>(); string strFilter = $"FBumpFormID='{FormID}'"; DynamicObject[] objArray = BusinessDataServiceHelper.Load(this.Context, "CRM_BumpAnalysisSettingEntity", null, OQLFilter.CreateHeadEntityFilter(strFilter)); if (objArray.Length == 0) { return(null); } DynamicObjectCollection objects = (objArray != null) ? ((DynamicObjectCollection)objArray[0]["FEntity"]) : null; List <Field> list = new List <Field>(); List <FieldAppearance> list2 = new List <FieldAppearance>(); List <BumpTypeField> list3 = new List <BumpTypeField>(); if (entrity.ParaFields == null) { entrity.ParaFields = new Hashtable(); } string str2 = ""; foreach (DynamicObject obj2 in objects) { if (obj2["settype"].ToString() == "1") { if ((bool)obj2["BUMPSHOW"]) { string key = obj2["FIELDNAME"].ToString(); Field item = entitryMeta.BusinessInfo.GetField(key); if (item != null) { list.Add(item); } FieldAppearance fieldAppearance = entitryMeta.GetLayoutInfo().GetFieldAppearance(key); if (fieldAppearance != null) { list2.Add(fieldAppearance); } if (item != null) { string str4 = item.EntityKey + "_" + item.PropertyName; if (!entrity.BumpAnalysisFields.ContainsKey(str4)) { BumpAnalysisFields fields = new BumpAnalysisFields(str4, new BumpTypeField(item), fieldAppearance, true, false); entrity.BumpAnalysisFields.Add(str4, fields); } else { entrity.BumpAnalysisFields[str4].BumpFields = new BumpTypeField(item); entrity.BumpAnalysisFields[str4].LayoutInfoAppearance = fieldAppearance; entrity.BumpAnalysisFields[str4].IsShowField = true; } } } if ((bool)obj2["SELECTED"]) { string str5 = obj2["FIELDNAME"].ToString(); string str6 = this.GetFieldData(this.BillModel.GetValue(str5)).Replace("'", "''"); string str7 = obj2["Matching"].ToString(); if (!string.IsNullOrEmpty(str6)) { str2 = str2 + "or " + str5 + ((str7 == "100") ? ("='" + str6.ToString() + "' ") : (" LIKE '%" + str6.ToString() + "%' ")); } Field field = entitryMeta.BusinessInfo.GetField(str5); if (field != null) { list3.Add(new BumpTypeField(field, str7)); } if (field != null) { string str8 = field.EntityKey + "_" + field.PropertyName; FieldAppearance appearance2 = entitryMeta.GetLayoutInfo().GetFieldAppearance(str5); if (!entrity.BumpAnalysisFields.ContainsKey(str8)) { BumpAnalysisFields fields2 = new BumpAnalysisFields(str8, new BumpTypeField(field, str7), appearance2, false, true); entrity.BumpAnalysisFields.Add(str8, fields2); } else { entrity.BumpAnalysisFields[str8].BumpFields = new BumpTypeField(field, str7); entrity.BumpAnalysisFields[str8].IsBumpField = true; } } } } else if ((obj2["settype"].ToString() == "2") && ((bool)obj2["selected"])) { string str9 = obj2["FIELDNAME"].ToString(); string str10 = obj2["Matching"].ToString(); entrity.ParaFields.Add(str9, str10); } } entrity.BumpFields = list3; entrity.BusinessInfoField = list; entrity.LayoutInfoAppearance = list2; return(entrity); }
/// <summary> /// 处理Excel块粘贴功能 /// </summary> /// <param name="view"></param> /// <param name="e"></param> /// <param name="bAllowAutoNewRows">允许自动新增行</param> /// <param name="bCanPaste">是否允许填充某字段</param> public static void PasteBlockData(this IDynamicFormView view, EntityBlockPastingEventArgs e, bool bAllowAutoNewRows = false, Func <FieldAppearance, int, bool> bCanPaste = null) { if (e.BlockValue.IsNullOrEmptyOrWhiteSpace()) { return; } FieldAppearance startFieldAp = view.LayoutInfo.GetFieldAppearance(e.StartKey); if (startFieldAp == null || (startFieldAp.Field.Entity is EntryEntity) == false) { return; } EntryEntity entryEntity = (EntryEntity)startFieldAp.Field.Entity; int iTotalRows = view.Model.GetEntryRowCount(entryEntity.Key); var copyOperation = view.BillBusinessInfo.GetForm().FormOperations .FirstOrDefault(o => o.OperationId == 31 && string.Equals(o.Parmeter.OperationObjectKey, entryEntity.Key, StringComparison.InvariantCultureIgnoreCase)); bool isCopyLinkEntry = false; //如果表格未配置复制行操作,则不允许自动新增行 if (copyOperation == null) { bAllowAutoNewRows = false; } else { isCopyLinkEntry = GetIsCopyLinkEntryParam(copyOperation.Parmeter); } string[] strBlockDataRows = e.BlockValue.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); int iRow = e.StartRow; foreach (var rowData in strBlockDataRows) { if (iRow >= iTotalRows) { if (bAllowAutoNewRows) { view.Model.CopyEntryRow(entryEntity.Key, iRow - 1, iRow, isCopyLinkEntry); } else { break; } } string[] strItemValues = rowData.Split(new char[] { '\t' }); FieldAppearance fieldAp = startFieldAp; foreach (var value in strItemValues) { if (fieldAp == null) { continue; } object objValue = value; if (typeof(ValueType).IsAssignableFrom(fieldAp.Field.GetPropertyType())) { if (value.IsNullOrEmptyOrWhiteSpace()) { objValue = 0; } else { ValueTypeConverter converter = new ValueTypeConverter(); if (value != null && converter.CanConvertTo(value.GetType())) { objValue = converter.ConvertTo(value, fieldAp.Field.GetPropertyType()); } } } if (bCanPaste == null || bCanPaste(fieldAp, iRow)) { (view as IDynamicFormViewService).UpdateValue(fieldAp.Key, iRow, objValue); } fieldAp = GetNextEditFieldAp(view, fieldAp, iRow); } iRow++; } }