venerdì 28 settembre 2012

AX 2009 - Lookup con lista dei campi di tabella

Vi serve visualizzare una lista di tutti i campi di una determinata tabella? Ecco il codice da implementare nel metodo "lookup" (override sul campo del datasource in cui vogliamo visualizzarla).

 public void lookup(FormControl _ctrl, str _filterStr)  
 {  
   SysTableLookup       sysTableLookup = SysTableLookup::newParameters(Tablenum(Utilelements),_ctrl);  
   Treenode             formnode;  
   Query                query = new Query();  
   QueryBuildDataSource queryBuildDataSource;  
   Treenode             datasource;  
   TableName            tableName;  
   TableId              tableId;  
   ;  
    
   formnode = treenode::findNode(@'\forms\SalesTable\data sources'); //form dove è contenuto il datasource in questo caso SalesTable
   
   datasource = formnode.AOTfirstChild();  
   tableName = datasource.AOTgetProperty('Table');  
   if (datasource)  
   {  
     tableId = tablename2id(tableNam);//id di SalesTable  
     sysTableLookup.addLookupfield(fieldnum(UtilElements, Name));  
     queryBuildDataSource = query.addDataSource(tablenum(UtilElements));  
     queryBuildDataSource.addRange(fieldnum(utilelements,recordtype)).value(queryvalue(UtilelementType::TableField));//range sul campo RecordType, dove specifichiamo che vogliamo i campi di una tabella
     queryBuildDataSource.addRange(fieldnum(Utilelements,ParentId)).value(queryvalue(tableId));  // range sul ParentId dei campi, gli specifichiamo quello di SalesTable
     sysTableLookup.parmQuery(query);  
     sysTableLookup.performFormLookup();  
   }  
 }  
A presto il lookup che visualizza la lista delle tabelle!

Nessun commento:

Posta un commento