Установите "X" динамически в "фильтре следующих дней" в расширенном поиске

В моей пользовательской панели инструментов я хотел бы показать список данных. Когда я создаю пользовательское представление с помощью функции "Расширенный поиск", я использую фильтр "Следующие x дней". Могу ли я установить это 'X' динамически из моего настраиваемого поля? Каждый ряд может иметь различный X.

Я могу сделать это с помощью SQL Reporting Services, но я бы предпочел обычный список. Есть ли способ или я должен использовать отчет?

Спасибо.

1 ответ

На самом деле это выглядит невозможным без некоторой настройки обходного пути! (Насколько мне известно). Но вы можете менять фильтры условий с помощью плагина каждый раз, когда он загружается. Для этого вы можете создать новую сущность и цифровое поле на ней. Каждый раз, когда приборная панель загружается, вы можете изменить условие представления, заменив значение этого объекта. Приведенный ниже фрагмент поможет вам в плагине:

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);
                    }

                }
            }
        }
    }
Другие вопросы по тегам