public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (value != default(object)) { Dynamics365View view = (Dynamics365View)value; return(string.Format("{0} ({1})", view.DisplayName, view.ID)); } return(base.ConvertTo(context, culture, value, destinationType)); }
/// <summary> /// Gets a list of Dynamics 365 Views /// </summary> /// <returns></returns> public List <Dynamics365View> GetDynamics365Views() { List <Dynamics365View> views = new List <Dynamics365View>(); try { if (Entity != default(Dynamics365Entity) && Parent != default(Dynamics365Connection)) { views.AddRange(Dynamics365View.GetViews(Entity, ViewType, (Dynamics365Connection)Parent)); } } catch { } return(views); }
/// <summary> /// /// </summary> /// <param name="entity"></param> /// <param name="connection"></param> /// <returns></returns> private static List <Dynamics365View> GetPersonalViews(Dynamics365Entity entity, IConnection connection) { ConnectionCache cache = new ConnectionCache(connection); string cacheKey = string.Format("GetPersonalViews:{0}:{1}", typeof(Dynamics365View).Name, entity.LogicalName); List <Dynamics365View> views = (List <Dynamics365View>)cache[cacheKey]; if (views == null) { views = new List <Dynamics365View>(); QueryExpression query = new QueryExpression("userquery"); query.Criteria.AddCondition("returnedtypecode", ConditionOperator.Equal, entity.ObjectTypeCode); query.Criteria.AddCondition("fetchxml", ConditionOperator.NotNull); query.Criteria.AddCondition("statecode", ConditionOperator.Equal, 0); query.ColumnSet = new ColumnSet(new string[] { "name", "fetchxml" }); // todo - not working? RetrieveMultipleRequest request = new RetrieveMultipleRequest() { Query = query }; using (OrganizationServiceProxy proxy = ((Dynamics365Connection)connection).OrganizationServiceProxy) { RetrieveMultipleResponse response = (RetrieveMultipleResponse)proxy.Execute(request); foreach (Entity viewEntity in response.EntityCollection.Entities) { Dynamics365View view = new Dynamics365View() { ID = viewEntity.Id, DisplayName = (string)viewEntity.Attributes["name"], FetchXml = (string)viewEntity.Attributes["fetchxml"] }; views.Add(view); } views.Sort((view1, view2) => view1.DisplayName.CompareTo(view2.DisplayName)); } cache[cacheKey] = views; } return(views); }