Sunday, 15 April 2018

How to filter workspace list grid / form Part in D365

In workspace filtering form part is quite complex task on which Microsoft has given very least documentation. In workspaces form parts are bound togther with a common datasource so we cannot add ranges for filteration. However by using SysIFilterProvider Interface it is possible to implement a method on each form part that is used on the workspace that would get a filter value from its parent workspace form and trigger those methods each time a modified() method is triggered on a workspace itself.

Step: 1
Make sure your form class implements SysIFilterProvider interface. as shown in image.





Step: 2
On Init method initialize your filter control change event from which you will get the value for filter your records as shown in image.











Step: 3
Write parmFilter method on which you passes the value to your form part as shown in image.












Note: 
In SysFilterValueFactory class there are six types of filters that you can use. In my case I am using RecId filter.
1- createFilterValueForBuffer
2- createFilterValueForRecId
3- createFilterValueForDateTime
4- createFilterValueForDate
5- createFilterValueForInteger
6- createFilterValueForString

Step: 4
Write parmChangeEvent as shown in image.












Step: 5
Implement SysIFilterConsumerForm, SysIFilterEventHandler Interfaces to your form part classes as shown in image.





Step: 6
Write register & fiter events and provide implementation of your datasource as shown in image.







No comments:

Post a Comment

How to Get Customer Free Text Invoice "Totals" form field value with X++ in D365FO

Customer free text invoices are an essential aspect of financial management in D365FO. In this blog, I have compiled all the code needed to ...