Коллеги, добрый день!
У нас в системе реализовано кастомное модальное окно, на котором расположен ряд фильтров. Подскажите, пожалуйста, как реализовать поле типом "Выбор из справочника" в модальном окне. Именно не список, а справочник.
Спасибо!
Нравится
Сергей, для полного понимания просьба прикрепить листинг кода.
Также скриншот как окно расположено и для чего поле "Выбор из справочник" необходим.
В поддержке сказали, что архитектура приложения не позволяет открывать окно выбора из справочника в модальном окне. Но если у вас есть идеи, буду благодарен)
Скриншот расположения окна - https://db.tt/gOBNhNzPCI.
Выбор из справочника необходим, например, для таких полей, как ОКВЭД.
Добрый день, Сергей.
Отображение модального окна в модальном окне является извечной проблемой не только в рамках bpb'online. Рекомендую Вам смотреть в сторону использования выпадающих списков и свойства prepareList для наполнения их в рантайме.
Коллеги, спасибо!
У кого-нибудь есть примеры реализации выпадающих список в модальных окнах с использованием этого свойства?
Вот пример для OrderPageV2. Для модального окна отличий быть не должно.
define("OrderPageV2", [], function() { return { entitySchemaName: "Order", details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/, diff: /**SCHEMA_DIFF*/[ { "operation": "insert", "name": "myEnum", "values": { "caption": "myEnum", "layout": { "colSpan": 12, "rowSpan": 1, "column": 0, "row": 2, "layoutName": "Header" }, "controlConfig": { "className": "Terrasoft.ComboBoxEdit", "list": { "bindTo": "myList" }, "change": { "bindTo": "onMyValueChange" }, "prepareList": { "bindTo": "prepareMyList" } }, "labelConfig": {}, "enabled": true, "bindTo": "myEnum" }, "parentName": "Header", "propertyName": "items", "index": 4 }]/**SCHEMA_DIFF*/, methods: { onPageInitialized: function(callback, scope) { if (!this.get("myList")) { this.set("myList", this.Ext.create("Terrasoft.Collection")); } if (callback) { callback.call(scope || this); } }, prepareMyList: function(filter, list) { if (list === null) { return; } list.clear(); var columns = {}; var value1 = { displayValue: "a123", value: "1" }; var value2 = { displayValue: "b234", value: "2" }; var value3 = { displayValue: "c345", value: "3" }; columns[1] = value1; columns[2] = value2; columns[3] = value3; list.loadAll(columns); }, onMyValueChange: function(val) { if (val && val.displayValue) { console.log("you pick: ", val.displayValue); } } }, attributes: { "myEnum": { "dataValueType": Terrasoft.DataValueType.ENUM, "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN, "caption": "myEnum" }, "myList": { "dataValueType": Terrasoft.DataValueType.ENUM, "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN, "isCollection": true } }, rules: {} }; });
Не знаю что у вас там не работает... Написал свой контрол (да, немного кривой:smile:), все сохраняется.
Сергей, Выше уже есть наглядный пример кода OrderPageV2. У Вас что-то не получается?