Combobox Microsoft Dynamics AX基于组合框筛选数据

Combobox Microsoft Dynamics AX基于组合框筛选数据,combobox,axapta,x++,dynamics-ax-2009,morph-x,Combobox,Axapta,X++,Dynamics Ax 2009,Morph X,我有一个要实现的功能: 在am的PurchTable表单中,被告知在表单顶部创建一个combox,该表单使用PurchTable.purchstatus字段中的枚举,即:发票、openorder、reveived 现在,点击组合框中的任何一个上面的元素,我应该只能在ie下面的网格中获得数据;如果单击发票,将显示采购状态为“发票”的记录 为此,我创建了一个组合框,并使用了overiden方法“selectionchange” selectionchange()的代码: 假设您有一个表单,其中包含一

我有一个要实现的功能:

在am的PurchTable表单中,被告知在表单顶部创建一个combox,该表单使用PurchTable.purchstatus字段中的枚举,即:发票、openorder、reveived

现在,点击组合框中的任何一个上面的元素,我应该只能在ie下面的网格中获得数据;如果单击发票,将显示采购状态为“发票”的记录

为此,我创建了一个组合框,并使用了overiden方法“selectionchange” selectionchange()的代码:


假设您有一个表单,其中包含一个名为
JAEEMantenimiento
的数据源,您希望从字段
Tipo
中筛选该数据源,以及一个名为
filterotipo
的数据未绑定组合框。这是当combo更改选择时需要过滤的代码:

// 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年应该可以正常工作。

您可以将此代码(在AX2009中测试)用于selectionChange()处理程序。 注意:在组合框上,应将属性
EnumType
设置为
purchtatus
(请参见屏幕截图),以便自动将枚举元素添加为条目

如果您对此代码有任何疑问,请随时发表评论

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;
}

谢谢你的回复,但是我没有得到.querybuilddatasource方法在drp中的init()方法中的down.public void init(){super();qbrTipo=JAEEMantenimiento_DS.querybuilddatasource().addRange(fieldNum(JAEEMantenimiento,Tipo));}
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;
}