Установите "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);
}
}
}
}
}