Microsoft Dynamics AX фильтрует данные на основе ComboBox
Я получил функциональность для реализации:
В форме "Покупка" мне предлагается создать поле сверху поверх формы, в которой использовалось перечисление, как в поле buyTable.purchstatus, то есть: invoiced, openorder,iveived,.
Теперь при нажатии на любой из вышеперечисленных элементов в поле со списком, я должен получить только эти данные в сетке ниже, т. Е. Если я нажму на выставленный счет, будет показана запись со статусом покупки "выставлен счет".
Для этого я создал выпадающий список и использовал метод overidden "selectionchange", код selectionchange():
public int selectionChange()
{
int ret;
ret = super();
if(combobox.selection()==status::invoiced)
{
... what will i have to write here to add range"invoiced" in the datasource
}
if(combobox.selection()==status::All)
{
. .. what will i have to write here to add range"invoiced" in the datasource
}
}
2 ответа
Вы можете использовать этот код (протестирован в AX2009) для вашего обработчика selectionChange(). Примечание: на вашем ComboBox вы должны установить свойство EnumType
в PurchStatus
(см. Снимок экрана), чтобы элементы enum автоматически добавлялись как записи.
Если у вас есть какие-либо вопросы относительно этого кода, не стесняйтесь комментировать...
public int selectionChange()
{
int ret;
QueryBuildRange range;
;
ret = super();
range = SysQuery::findOrCreateRange(
purchTable_DS.query().dataSourceTable(tablenum(PurchTable)),
fieldnum(PurchTable, PurchStatus));
range.value(queryValue(this.selection()));
purchTable_DS.executeQuery();
return ret;
}
Представьте, что у вас есть форма с источником данных под названием JAEEMantenimiento
что вы хотите отфильтровать с поля Tipo
и несвязанный со списком данных FiltroTipo
, Это код, который вам нужно отфильтровать при изменении выбора комбо:
// classDeclaration of the FORMULARIO!!
public class FormRun extends ObjectRun
{
QueryBuildRange qbrTipo;
}
// Form DATASOURCE (JAEEMantenimiento)
public void init()
{
super();
qbrTipo = JAEEMantenimiento_DS.queryBuildDataSource()
.addRange(fieldNum(JAEEMantenimiento, Tipo));
}
// Form DATASOURCE (JAEEMantenimiento)
public void executeQuery()
{
qbrTipo.value(queryValue(FiltroTipo.selection()));
super();
}
// COMBOBOX (FiltroTipo)
public boolean modified()
{
boolean ret;
ret = super();
JAEEMantenimiento_DS.executeQuery();
return ret;
}
Это код AX 2012, но он должен нормально работать в 2009 году.