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"); }
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; } }
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"); }