在“高级查找”中的“下一个x天过滤器”中动态设置“X”

时间:2013-01-22 15:29:39

标签: dynamics-crm-2011 fetchxml

在我的自定义信息中心中,我想显示一个数据列表。当我使用Advance Find创建自定义视图时,我正在使用“next x days”过滤器。我可以从自定义字段中动态设置“X”吗?每行可以有不同的X.

我可以使用SQL Reporting Services执行此操作,但我更喜欢普通列表。有办法还是我必须使用报告?

谢谢。

1 个答案:

答案 0 :(得分:0)

实际上,如果没有一些变通方法定制,看起来不可能做到这一点! (据我所知)。但是每次加载时都可以使用插件更改条件过滤器。为此,您可以在其上创建新实体和数字字段。每次仪表板加载时,您都可以通过替换该实体的值来更改视图的条件。以下代码段可以帮助您完成插件:

public void Execute(IServiceProvider serviceProvider)
        {
            // Obtain the execution context from the service provider.
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));


         if (context.Mode == 0 && context.Stage == 20 && context.MessageName.Equals("RetrieveMultiple"))          
         {
            if (context.InputParameters.Contains("Query"))
            {
                if (context.InputParameters["Query"] is QueryExpression)
                {
                    QueryExpression objQueryExpression = (QueryExpression)context.InputParameters["Query"];

                    if (objQueryExpression.EntityName == "account")
                    {
                        IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                        IOrganizationService  service = serviceFactory.CreateOrganizationService(context.UserId);
                        ConditionExpression privateFlagCondition;


                            privateFlagCondition = new ConditionExpression()
                            {
                                AttributeName = "statustype",
                                Operator = ConditionOperator.Equal,
                                Values = { "1" }
                            };


                        FilterExpression newFilter = new FilterExpression()
                        {
                            FilterOperator = LogicalOperator.Or,
                            Conditions = { privateFlagCondition }
                        };

                        objQueryExpression.Criteria.AddFilter(newFilter);
                    }

                }
            }
        }
    }