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 году.

Другие вопросы по тегам