예제 #1
0
        private void DeployDependentLookupField(object modelHost, FieldCollection fields, DependentLookupFieldDefinition definition)
        {
            var context = fields.Context;

            var primaryLookupField   = GetPrimaryLookupField(fields, definition);
            var dependentLookupField = GetDependentLookupField(fields, definition);

            if (dependentLookupField == null)
            {
                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model            = null,
                    EventType        = ModelEventType.OnProvisioning,
                    Object           = null,
                    ObjectType       = typeof(FieldLookup),
                    ObjectDefinition = definition,
                    ModelHost        = modelHost
                });

                var internalName = fields.AddDependentLookup(definition.InternalName, primaryLookupField, definition.LookupField);

                dependentLookupField       = GetDependentLookupField(fields, definition);
                dependentLookupField.Title = definition.Title;

                dependentLookupField.LookupList  = primaryLookupField.LookupList;
                dependentLookupField.LookupWebId = primaryLookupField.LookupWebId;

                if (!string.IsNullOrEmpty(primaryLookupField.LookupList) &&
                    string.IsNullOrEmpty(dependentLookupField.LookupList))
                {
                    dependentLookupField.LookupList = primaryLookupField.LookupList;
                }

                if (string.IsNullOrEmpty(dependentLookupField.PrimaryFieldId))
                {
                    dependentLookupField.PrimaryFieldId = primaryLookupField.Id.ToString();
                }

                dependentLookupField.ReadOnlyField       = true;
                dependentLookupField.AllowMultipleValues = primaryLookupField.AllowMultipleValues;

                // unsuppoeted in CSOM yet
                //dependentLookupField.UnlimitedLengthInDocumentLibrary = primaryLookupField.UnlimitedLengthInDocumentLibrary;
                dependentLookupField.Direction = primaryLookupField.Direction;
            }
            else
            {
                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model            = null,
                    EventType        = ModelEventType.OnProvisioning,
                    Object           = dependentLookupField,
                    ObjectType       = typeof(FieldLookup),
                    ObjectDefinition = definition,
                    ModelHost        = modelHost
                });
            }

            dependentLookupField.Title = definition.Title;

            dependentLookupField.LookupField = definition.LookupField;

            if (!string.IsNullOrEmpty(primaryLookupField.LookupList) &&
                string.IsNullOrEmpty(dependentLookupField.LookupList))
            {
                dependentLookupField.LookupList = primaryLookupField.LookupList;
            }
            dependentLookupField.LookupWebId = primaryLookupField.LookupWebId;

            dependentLookupField.Group       = string.IsNullOrEmpty(definition.Group) ? "Custom" : definition.Group;
            dependentLookupField.Description = definition.Description ?? string.Empty;

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = dependentLookupField,
                ObjectType       = typeof(FieldLookup),
                ObjectDefinition = definition,
                ModelHost        = modelHost
            });

            dependentLookupField.UpdateAndPushChanges(true);

            context.ExecuteQueryWithTrace();
        }
        private void DeployDependentLookupField(object modelHost, FieldCollection fields, DependentLookupFieldDefinition definition)
        {
            var context = fields.Context;

            var primaryLookupField = GetPrimaryLookupField(fields, definition);
            var dependentLookupField = GetDependentLookupField(fields, definition);

            if (dependentLookupField == null)
            {
                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model = null,
                    EventType = ModelEventType.OnProvisioning,
                    Object = null,
                    ObjectType = typeof(FieldLookup),
                    ObjectDefinition = definition,
                    ModelHost = modelHost
                });

                var internalName = fields.AddDependentLookup(definition.InternalName, primaryLookupField, definition.LookupField);

                dependentLookupField = GetDependentLookupField(fields, definition);
                dependentLookupField.Title = definition.Title;

                dependentLookupField.LookupList = primaryLookupField.LookupList;
                dependentLookupField.LookupWebId = primaryLookupField.LookupWebId;

                if (!string.IsNullOrEmpty(primaryLookupField.LookupList) &&
                string.IsNullOrEmpty(dependentLookupField.LookupList))
                {
                    dependentLookupField.LookupList = primaryLookupField.LookupList;
                }

                if (string.IsNullOrEmpty(dependentLookupField.PrimaryFieldId))
                    dependentLookupField.PrimaryFieldId = primaryLookupField.Id.ToString();

                dependentLookupField.ReadOnlyField = true;
                dependentLookupField.AllowMultipleValues = primaryLookupField.AllowMultipleValues;

                // unsuppoeted in CSOM yet
                //dependentLookupField.UnlimitedLengthInDocumentLibrary = primaryLookupField.UnlimitedLengthInDocumentLibrary;
                dependentLookupField.Direction = primaryLookupField.Direction;
            }
            else
            {
                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model = null,
                    EventType = ModelEventType.OnProvisioning,
                    Object = dependentLookupField,
                    ObjectType = typeof(FieldLookup),
                    ObjectDefinition = definition,
                    ModelHost = modelHost
                });

            }

            dependentLookupField.Title = definition.Title;

            dependentLookupField.LookupField = definition.LookupField;

            if (!string.IsNullOrEmpty(primaryLookupField.LookupList) &&
                string.IsNullOrEmpty(dependentLookupField.LookupList))
            {
                dependentLookupField.LookupList = primaryLookupField.LookupList;
            }
            dependentLookupField.LookupWebId = primaryLookupField.LookupWebId;

            dependentLookupField.Group = string.IsNullOrEmpty(definition.Group) ? "Custom" : definition.Group; 
            dependentLookupField.Description = definition.Description ?? string.Empty;

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model = null,
                EventType = ModelEventType.OnProvisioned,
                Object = dependentLookupField,
                ObjectType = typeof(FieldLookup),
                ObjectDefinition = definition,
                ModelHost = modelHost
            });

            dependentLookupField.UpdateAndPushChanges(true);

            context.ExecuteQuery();
        }