// <association label="Labor" target="laborcode" labelfield="labor.laborcode,person_.displayname" /> // <field attribute="labor_.laborcode" label="Labor" > // <lookup sourceApplication="labor" sourceField="laborcode" sourceDisplay="laborcode,person_.displayname" targetField="laborcode" targetQualifier=""> // <lookupFilters > // <lookupFilter sourceField="orgid" targetField="orgid" /> // </lookupFilters> // </lookup> // </field> private static void ConvertAssociationsToLookups(String applicationName, IList <IApplicationDisplayable> displayables) { var idxsToReplace = new Dictionary <int, ApplicationFieldDefinition>(); for (int i = 0; i < displayables.Count; i++) { var displayable = displayables[i]; var association = displayable as ApplicationAssociationDefinition; if (association == null) { continue; } var attrs = association.EntityAssociation.NonPrimaryAttributes(); var primaryAttr = association.EntityAssociation.PrimaryAttribute(); var filters = new List <LookupWidgetDefinition.Filter>(); foreach (var attribute in attrs) { filters.Add(new LookupWidgetDefinition.Filter(attribute.To, attribute.From, attribute.Literal)); } var attributeName = association.LabelFields[0]; var lookup = new LookupWidgetDefinition(association.ApplicationTo, primaryAttr.To, new List <String>() { attributeName, primaryAttr.To }, primaryAttr.From, "", filters); var field = displayables.OfType <ApplicationFieldDefinition>() .FirstOrDefault(d => d.Attribute == association.ApplicationTo + "." + attributeName); if (field == null) { field = new ApplicationFieldDefinition(applicationName, attributeName, association.Label, false, false, false, new FieldRenderer(), lookup, association.DefaultValue, null, null, association.ToolTip, null); idxsToReplace.Add(i, field); } else { field.WidgetDefinition = lookup; } } foreach (var idx in idxsToReplace.Keys) { displayables[idx] = idxsToReplace[idx]; } }
public LookupWidget(LookupWidgetDefinition definition) : base(definition.SourceApplication, definition.SourceField, definition.SourceDisplay, definition.TargetField, definition.TargetQualifier, definition.Filters) { _definition = definition; }