예제 #1
0
        public static void PrepareComputedField(WidgetContext context, IWidget widget, BaseField field)
        {
            var exp = field.ComputeExpression;

            foreach (var f in exp.KeyWords)
            {
                context.FormContext.AddMissingField(f);
            }

            var feture = new WidgetFeature();

            feture.Depends = exp.KeyWords;
            feture.Add(ViewConstant.Expression, exp);

            AddFeature(widget, feture, "EVAL");
        }
예제 #2
0
        private static void AddFeature(IWidget widget, WidgetFeature feature, string type)
        {
            if (widget.Features == null)
            {
                widget.Features = new WidgetFeatures();
            }

            if (type == "EVAL")
            {
                widget.Features.Eval = feature;
            }
            else if (type == "INVISIBLE")
            {
                widget.Features.Invisible = feature;
            }
            else if (type == "READONLY")
            {
                widget.Features.ReadOnly = feature;
            }
        }
예제 #3
0
        private static void BuildReadonly(WidgetContext context, IWidget widget, BaseField field, TField layoutField)
        {
            if (layoutField == null || String.IsNullOrEmpty(layoutField.ReadOnly))
            {
                return;
            }

            var exp = layoutField.ReadOnly;

            if (exp == "1")
            {
                widget.IsReadOnly = true;
                return;
            }
            else if (exp == "2") //ReadonlyOnEdit
            {
                var ent = context.FormContext.Entity;
                if (ent != null)
                {
                    exp = @"[{""" + ent.IDField + @""": [3,0]}]";
                }
                else
                {
                    return;
                }
            }
            var formContext = context.FormContext;

            var criteria = FilterExpression.BuildFromJson(formContext.Entity.EntityId, exp);

            AddMissingFields(context.FormContext, criteria);

            var feture = new WidgetFeature();

            feture.Depends  = criteria.GetFieldNames() as List <string>;
            feture.Criteria = new FormFilterExpression(formContext, criteria);

            AddFeature(widget, feture, "READONLY");
        }