예제 #1
0
        //          <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];
            }
        }
예제 #2
0
 public LookupWidget(LookupWidgetDefinition definition)
     : base(definition.SourceApplication, definition.SourceField, definition.SourceDisplay, definition.TargetField, definition.TargetQualifier, definition.Filters)
 {
     _definition = definition;
 }