Добрый день!
Вопрос вроде как элементарный, но вызывающий недоумение.
Как програмнно сформировать елементы для RADIO_GROUP?
Нужно представить выбор из справочника именно через RADIO_GROUP.
Емеется в наличии только JS код выгруженный из конфигурации. Глядя на него пытался сделать нечто подобное:
{
operation: "insert",
name: "RadioGroupContainer",
values: {
itemType: Terrasoft.ViewItemType.RADIO_GROUP,
name: "RadioGroup",
collection: {bindTo: "RadioGroupItemCollection"},
items: []
}
Коллекцию RadioGroupItemCollection формирую в методе init, как набор конфигов. Но ничего не получается.
Нравится
Максим, ошибка может заключаться в использовании метода init. Попробуйте использовать onEntityInitialized. Так же за елементы radio_group отвечает свойство items, а не collection.
{ "operation": "insert", "name": "UsrProductionType", "values": { "itemType": 16, "layout": { "column": 12, "row": 1, "colSpan": 12, "rowSpan": 1 }, "bindTo": "UsrProductionType", "items": [], "value": { "bindTo": "UsrProductionType" } }, "parentName": "Header", "propertyName": "items", "index": 3 }, { "operation": "insert", "name": "FirstUsrProductionType", "values": { "caption": { "bindTo": "Resources.Strings.FirstUsrProductionTypeCaption" }, "value": "Название 1" }, "parentName": "UsrProductionType", "propertyName": "items", "index": 0 }, { "operation": "insert", "name": "SecondUsrProductionType", "values": { "caption": { "bindTo": "Resources.Strings.SecondUsrProductionTypeCaption" }, "value": "Название 2" }, "parentName": "UsrProductionType", "propertyName": "items", "index": 1 }
Спасибо за ответы!
Антон, закодировать через diff схему я могу без проблем так (суть аналогична вашей):
{
operation: "insert",
name: "CallReason",
values: {
itemType: Terrasoft.ViewItemType.RADIO_GROUP,
caption: "Call Reason",
value: {bindTo: "CallReason"},
items: [
{
name: "Test1",
caption: "Test1",
value: "Test1"
}, {
name: "Test2",
caption: "Test2",
value: "Test2"
}, {
name: "Test3",
caption: "Test3",
value: "Test3"
}
]
}
}
Вопрос, как добавить эти items программно, когда их список не предопределен изначально.
Илья, я делал и через items двумя способами так:
1. items: {bintTo: "getItemsConfig"}
2. items: {bintTo: "SomeCollectionAttribute"}
где,
getItemConfig - это какая-то функция, возвращающая конфиг для items,
SomeCollectionAttribute - это атрибут коллекция - набор конфигов для каждого items.
Судя по отладчику генератор radio button не вызывает функцию, и не использует коллекцию, переданные в bindTo. Генератор просто пытается интепретировать имя того что передано в bindTo ("getItemsConfig" или "SomeCollectionAttribute") сразу как конфиг, и соответсвенно падает на этом.
Максим, Вам стоит посмотреть в сторону схемы "ViewGeneratorV2", в котором и происходит генерация радио группы и ее айтемов. Или же попробуйте создать свой Контейнер унаследовавшись от AbstractContainer или Container.
По подсказке хороших людей нашли подходящий пример в конфигурации здесь:
Order.AddressSelectionDetailV2
Сделал по аналогии. Суть такая, что полностью генерируем контрол заново как Container содержаций Containers с помощью GridUtilitesV2.
Способ конечно очень трудозатратный для такой простой задачи, но рабочий)