Exemplo n.º 1
0
 // 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;
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 6
0
        /// <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++;
            }
        }