public static Dictionary <string, string> GetFromFields(FieldDependencyEntityToken entityToken) { var definition = DynamicFormsFacade.GetFormByName(entityToken.FormName); var field = definition.Model.Fields.Get(entityToken.FieldName); return(definition.Model.Fields.Where(f => f.Name != entityToken.FieldName && (f.ValueType == typeof(string) || f.ValueType == typeof(bool) || f.ValueType == typeof(IEnumerable <string>)) && field.DependencyAttributes.All(d => d.ReadFromFieldName != f.Name || d.ReadFromFieldName == entityToken.FromFieldName) ).ToDictionary(f => f.Name, f => f.Name)); }
public override void OnFinish(object sender, EventArgs e) { var token = GetBinding <FieldDependencyEntityToken>("Token"); var fromFieldName = GetBinding <string>("FromFieldName"); var definition = DynamicFormsFacade.GetFormByName(token.FormName); var field = definition.Model.Fields.Get(token.FieldName); var dependency = field.DependencyAttributes.Single(d => d.ReadFromFieldName == token.FromFieldName); field.Attributes.Remove(dependency); field.Attributes.Add(new DependsOnConstantAttribute(fromFieldName, dependency.ResolveRequiredFieldValues())); DynamicFormsFacade.SaveForm(definition); var newToken = new FieldDependencyEntityToken(token.FormName, token.FieldName, fromFieldName); UpdateBinding("Token", newToken); SetSaveStatus(true, newToken); CreateSpecificTreeRefresher().PostRefreshMessages(new FieldDependencyEntityToken(token.FormName, token.FieldName)); }