Добрый день!
Вопрос вроде как элементарный, но вызывающий недоумение.
Как програмнно сформировать елементы для 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.
[javascript]
{
"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
}
[/javascript]
Спасибо за ответы!
Антон, закодировать через 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.
Способ конечно очень трудозатратный для такой простой задачи, но рабочий)