Microsoft Dynamics AX基于ComboBox过滤数据

时间:2013-08-23 13:13:39

标签: combobox axapta x++ dynamics-ax-2009 morph-x

我有一个实现的功能:

在PurchTable形式中,am告诉我在purchTable.purchstatus字段中使用enum创建一个combox,即:invoiced,openorder,reveived ,.

现在单击组合框中的上述元素中的任何一个,我应该只在下面的网格中获取该数据,即;如果我点击发票,将显示带有“已开发票”状态的记录。

为此我创建了一个组合框并使用了重叠方法“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 个答案:

答案 0 :(得分:3)

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

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

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

enter image description here

答案 1 :(得分:1)

想象一下,您有一个名为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年运作良好。