Filter and Sort the records of Grid in Ax 2012 with Example

My Table:Bill_TableData

I have a table named Bill_TabMethod with many fields. But I’am using two fields to filter. one is the name of the customer and another one is the name of the item which is purchased by the customer. Now iam going to filter the records by Customer Name as well as Item name specified by the user. for that i am using one string edit control, one button and one radio button control/

Second thing is for Sorting, for sorting i took one radio button with two items like Ascending and Descending.

CODE:

This is under form

public class FormRun extends ObjectRun

{

QueryBuildRange custname;

QueryBuildRange itemname;

}

Write this code under Datasource init() method

public void init()

{

super();

custname=this.query().dataSourceNo(1).addRange(fieldNum(Bill_TabMethod,CustName));

itemname=this.query().dataSourceNo(1).addRange(fieldNum(Bill_TabMethod,ItemName));

}

Write this code under datasource executeQuery() method

public void executeQuery()

{

if(FilterString.valueStr())

{

if(ChoiceButton.valueStr()==”CustName”)

custname.value(FilterString.valueStr());

else if(ChoiceButton.valueStr()==”ItemName”)

itemname.value(FilterString.valueStr());

}

super();

}

This is under Radiobutton Selection change Override Method

public int selectionChange()

{

int ret;

ret = super();

if(SortButton.valueStr()==”Ascending”)

{

Bill_TabMethod_ds.query().dataSourceNo(1).sortClear();

Bill_TabMethod_ds.query().dataSourceNo(1).addSortField(fieldNum(Bill_TabMethod,CustName),SortOrder::Ascending);

}

else if(SortButton.valueStr()==”Descending”)

{

Bill_TabMethod_ds.query().dataSourceNo(1).sortClear();

Bill_TabMethod_ds.query().dataSourceNo(1).addSortField(fieldNum(Bill_TabMethod,CustName),SortOrder::Descending);

}

SubmitButton.clicked();

return ret;

}

This is under Button Clicked Override method

void clicked()

{

super();

Bill_TabMethod_ds.executeQuery();

}

OUTPUTS:

Filter by Item name                                                          Filter by Customer Name

filterbyitemname filterbycustname

Sort by Descending                                                           Sort by Ascending

Descending Ascending

How to create Full Text Index in Dynamics AX 2012 with Example

Full text index supports to quickly query words that are embedded in the middle of a string field of a table. Well, this is a very nice enhancement to query on Database table fields for the developers who work with the latest vesion [Microsoft Dynamics AX 2012]
Good thing is we can use this Index on Memo fields and also Extended data type.
Let me explain with an example. Create a new table as shown below and add a new field of type string “Name” to it – On the field use EDT – Name. In the below example, my table Name is FullTextIndexTextTable.
Once you are done with your table, Go to FullTextIndex Node >> Right click and create a new FullTextIndex.
Rename it to JkFullTextIdx. Drag and drop Name field from the fields to the newly created index.
The table with index should look like below.
 FulltextindexTable
Here I’ve created a input string edit control  ( for user input ) and  a submit button.
CODE:
This is a code in form

public class FormRun extends ObjectRun

{

QueryBuildRange qbr;

str localValue;

}

This code is in Form Datasource override mehtod executeQuery()

public void executeQuery()

{

localValue = NameInput.valueStr();

if(localValue)

{

qbr = SysQuery::findOrCreateRange(FullTextIndexTextTable_ds.queryBuildDataSource(), fieldnum(FullTextIndexTextTable, Name));

qbr.rangeType(QueryRangeType::FullText);

qbr.value(localValue);

}

super();

}

This code in Button Clicked() override method

void clicked()

{

super();

FullTextIndexTextTable_ds.executeQuery();

}

Output:

fulltextindexOP