Esempio n. 1
0
        public void RetrieveAttributes()
        {
            var entity = CmbEntities.SelectedItem as ObjectCollectionItem <EntityMetadata>;

            if (entity == null)
            {
                return;
            }

            WorkAsync(new WorkAsyncInfo("Retrieving Attributes...", e =>
            {
                e.Result = Service.Execute(new RetrieveEntityRequest
                {
                    LogicalName           = entity.Value.LogicalName,
                    EntityFilters         = EntityFilters.Attributes,
                    RetrieveAsIfPublished = true
                });
            })
            {
                PostWorkCallBack = e =>
                {
                    try
                    {
                        CmbAttributes.BeginUpdate();
                        CmbAttributes.Items.Clear();
                        CmbAttributes.Text = null;
                        var result         = ((RetrieveEntityResponse)e.Result).EntityMetadata.Attributes.
                                             Where(a =>
                                                   (SelectOptionSetsForEntity &&
                                                    (a.AttributeType == AttributeTypeCode.Picklist ||
                                                     a.AttributeType == AttributeTypeCode.State ||
                                                     a.AttributeType == AttributeTypeCode.Status)) ||
                                                   a.IsLocalOptionSetAttribute()).
                                             Select(a => new ObjectCollectionItem <AttributeMetadata>(a.SchemaName + " (" + a.LogicalName + ")", a)).
                                             OrderBy(r => r.DisplayName);

                        CmbAttributes.Items.AddRange(result.Cast <object>().ToArray());
                    }
                    finally
                    {
                        CmbAttributes.EndUpdate();
                        Enable(true);
                    }
                }
            });
        }