2013-08-23 102 views
1

的Microsoft Dynamics AX过滤数据我有一个功能来实现:基于一个ComboBox

在上午PurchTable形式告知要窗体的顶部,其使用枚举作为purchTable.purchstatus领域,即创建一个COMBOX:发票, openorder,收讫,.

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

为了这个,我创建了一个组合框,并使用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 

} 

    } 

回答

1

假设你有一个名为​​数据源要从外地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年

+0

感谢您的回复,但我不是在初始化得到.querybuilddatasource在DRP方法降低()method.public void init() { super(); qbrTipo = JAEEMantenimiento_DS.queryBuildDataSource() .addRange(fieldNum(JAEEMantenimiento,Tipo)); } – user2711111

2

工作得很好,你可以使用此代码(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

+0

Thanks..its working ... – user2711111

+0

很高兴听到!请接受这个答案 – DAXaholic