Потребовалось отфильтровать список значений, отображаемых для поля справочник.
Если нужно отфильтровать записи только одного, определенного типа (например), то используем такой код после базового события Init:
//Guid SomeId_2 = new Guid("...");
Page.SomeEditField.PrepareLookupFilter += delegate (object sender, LookupEditEventArgs e) {
e.Filters.Add(new Dictionarystring, object> {
{"comparisonType", FilterComparisonType.Equal},
{"leftExpressionColumnPath", "Type"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object[]{SomeId_1} }});
};
А вот если отфильтровать надо по двум возможным типам? Тогда как быть? FilterComparisonType.Equal не подходит... Нужно, чтобы отобразились записи типа SomeId_1 или SomeId_2.
Guid SomeId_2 = new Guid("...");
Нравится
Разобрался сам :)
Guid SomeId_1 = new Guid("..."); Guid SomeId_2 = new Guid("..."); Page.SomeEditField.PrepareLookupFilter += delegate (object sender, LookupEditEventArgs e) { e.Filters.Add(new Dictionary<string, object> { {"comparisonType", FilterComparisonType.Equal}, {"leftExpressionColumnPath", "Type"}, {"useDisplayValue", false}, {"rightExpressionParameterValues", new object[]{SomeId_1, SomeId_2} }}); };
Коллеги, добрый день.
Хотел бы реанимировать эту тему) в версии 7.9 подскажите, плиз, как сделать фильтрацию по двум айдишникам:
У меня есть справочник Vocabulary, в нем два айди: ID_1 и ID_2. Сейчас код фильтрует только по 1 айдишнику. Подскажите, плиз, как сделать фильтрацию по 2 и более значениям справочника
rules: { "FieldToBeFiltered": { "FiltrationByType": { "ruleType": BusinessRuleModule.enums.RuleType.FILTRATION, "autocomplete": true, "autoClean": true, "baseAttributePatch": "Vocabulary", "comparisonType": Terrasoft.ComparisonType.EQUAL, "type": BusinessRuleModule.enums.ValueType.CONSTANT, "value": "ID_1" } } },
Дмитрий, здравствуйте!
На данный момент в 7.х такой возможности нет, но зафиксировали Ваше пожелание для рассмотрения возможной реализации в будущих версиях.
Обходные варианты:
- написать второе бизнес-правило, которое будет фильтроваться по другой колонке (не проверяли);
-с помощью filtergroup прописать бизнес-правила. На community есть множество тем на подобный запрос: http://www.community.terrasoft.ru/search/node/filtergroup
Пример (cхема «AccountPageV2», пакет «UIv2»):
emailDetailFilter: function() { var recordId = this.get("Id"); var filterGroup = new this.Terrasoft.createFilterGroup(); filterGroup.add("AccountNotNull", this.Terrasoft.createColumnIsNotNullFilter("Account")); filterGroup.add("AccountConnection", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.EQUAL, "Account", recordId)); filterGroup.add("ActivityType", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.EQUAL, "Type", ConfigurationConstants.Activity.Type.Email)); return filterGroup; },