Регистрация  |  Вход

Как отфильтровать Picklist Values по RecordType?

Привет всем,

подскажите, столкнулся с такой проблемой

Мне нужно получить возможные значения picklist для объекта. Пока это не проблема и решается вот так:

Map<String, Schema.SObjectField> leadFields = Lead.SObjectType.getDescribe().fields.getMap();
list<Schema.PicklistEntry> values = leadFields.get('Status').getDescribe().getPickListValues();
for (Schema.PicklistEntry a : values) {
...
}

НО! В объекте есть RecordTypes и набор возможных значений Picklist меняется в зависимости от RecordType.

Как мне в коде определить список возможных значений picklist поля по RecordType?

Привет всем,

подскажите, столкнулся с такой проблемой

Мне нужно получить возможные значения picklist для объекта. Пока это не проблема и решается вот так:

[code]
Map<String, Schema.SObjectField> leadFields = Lead.SObjectType.getDescribe().fields.getMap();
list<Schema.PicklistEntry> values = leadFields.get('Status').getDescribe().getPickListValues();
for (Schema.PicklistEntry a : values) {
   ...
}[/code]

НО! В объекте есть RecordTypes и набор возможных значений Picklist меняется в зависимости от RecordType.

Как мне в коде определить список возможных значений picklist поля по RecordType?

у DescribeFieldResult есть метод getController() - может быть, чем-то поможет!

у DescribeFieldResult есть метод getController() - может быть, чем-то поможет!

Не получилось ничего выжать из getController(). Но спасибо за совет.

Нашел в интернете обходной путь решения данной проблемы. Все источники явно заявляют что нет "прямого" способа это сделать в коде, хотя информация не первой свежести.

Так как все равно мне эти значения нужны были на странице, то создал объект-болванку с нужным рекорд тайпом, а на странице вставил inputField для нужного Picklist, а потом с помощью jQuery выдрал все labels и values. Чтобы лишний input не мозолил глаза пользователю, то скрыл его со страницы с помощью css.

Вот такой вот обходной путь Может кому пригодится.

Не получилось ничего выжать из getController(). Но спасибо за совет.

Нашел в интернете обходной путь решения данной проблемы. Все источники явно заявляют что нет "прямого" способа это сделать в коде, хотя информация не первой свежести.

Так как все равно мне эти значения нужны были на странице, то создал объект-болванку с нужным рекорд тайпом, а на странице вставил inputField для нужного Picklist, а потом с помощью jQuery выдрал все labels и values. Чтобы лишний input не мозолил глаза пользователю, то скрыл его со страницы с помощью css.

Вот такой вот обходной путь :) Может кому пригодится.

Dmitry Shnyrev
Не получилось ничего выжать из getController(). Но спасибо за совет.

Нашел в интернете обходной путь решения данной проблемы. Все источники явно заявляют что нет "прямого" способа это сделать в коде, хотя информация не первой свежести.

Так как все равно мне эти значения нужны были на странице, то создал объект-болванку с нужным рекорд тайпом, а на странице вставил inputField для нужного Picklist, а потом с помощью jQuery выдрал все labels и values. Чтобы лишний input не мозолил глаза пользователю, то скрыл его со страницы с помощью css.

Вот такой вот обходной путь Может кому пригодится.

О друг мой ты столкнулся с редкостной жопой. И зовут её depended picklist. Я нашёл решение этой проблемы только на JS. Найду ссылку обновлю инфу.

[quote="Dmitry Shnyrev"]Не получилось ничего выжать из getController(). Но спасибо за совет.

Нашел в интернете обходной путь решения данной проблемы. Все источники явно заявляют что нет "прямого" способа это сделать в коде, хотя информация не первой свежести.

Так как все равно мне эти значения нужны были на странице, то создал объект-болванку с нужным рекорд тайпом, а на странице вставил inputField для нужного Picklist, а потом с помощью jQuery выдрал все labels и values. Чтобы лишний input не мозолил глаза пользователю, то скрыл его со страницы с помощью css.

Вот такой вот обходной путь :) Может кому пригодится.[/quote]

О друг мой ты столкнулся с редкостной жопой. И зовут её depended picklist. Я нашёл решение этой проблемы только на JS. Найду ссылку обновлю инфу.