Thursday 5 July 2012

Adding Find\Filter functionality on Display method AX 2009

Override Context method of Form control which is using display method and provide code for filter. E.g I have done below for PhysicalInvent field of InventOnHandItem form.

void context()
{
int                     selectedMenu;
real                    test;
formrun             fr;
Args                   ag;
Itemname           strtext;
querybuilddataSource    qb1;
queryrun             qr;
query                   q;
PopupMenu        menu = new PopupMenu(element.hWnd());
int                       a = menu.insertItem('Find');
int                       b = menu.insertItem('Filter');
int                       c = menu.insertItem('Remove Filter');

selectedMenu = menu.draw();
switch (selectedMenu)
{
case -1:
break;
case a:
ag = new args('SysformSearch');
fr = new formrun(ag);
fr.run();
fr.wait();
strtext = fr.design().controlName('FindEdit').valueStr();
if(strtext)
{
q = inventSum_Ds.query();
qb1 =q.dataSourceTable(tablenum(InventSum));
QB1.addRange(FieldNum(InventSum,PhysicalInvent)).value(SySQuery::value(strtext));
INVENTSUM_DS.query(Q);
INVENTSUM_ds.executeQuery();
}
break;
case b:
InventSum_DS.filter(FieldNum(InventSum,PhysicalInvent),Sysquery::value(InventSum.PhysicalInvent()));
break;
case c :
InventSum_DS.removeFilter();
break;
Default:
break;
}

No comments:

Post a Comment