Sorting Data in X++ (D365FO) Grids Using Form Data Source Events
Ujjawal Tiwari
"Skilled Professional in Microsoft Dynamics 365 F&O Development, Tech Consulting, Full Stack Dev, Data Analysis, DevOps. Proficient in Azure, Power BI, Power Apps, Digital Marketing, GitHub, PHP, C# and X++"
Introduction: In Dynamics 365 Finance and Operations, form grids often display data retrieved from a table or query. However, the default sorting applied may not always align with business requirements. Customizing sorting behavior at runtime ensures that the grid data is presented in a meaningful order for users.
This blog post demonstrates how to use the Initialized event of a form data source to apply custom sorting to a grid. We will sort the grid rows based on a specific field (DisplayOrder) in ascending order.
Understanding the Code:
Here’s the complete code snippet:
[FormDataSourceEventHandler(formDataSourceStr(MyFormDataSource, MyTable), FormDataSourceEventType::Initialized)]
public static void MyFormDataSource_OnInitialized(FormDataSource sender, FormDataSourceEventArgs e)
{
// It will clear if any other sorting is applied on the grid
sender.queryBuildDataSource().sortClear();
// It will add the sorting on the field
// Use the table and field as per your own requirement in fieldNum function.
// Use the ascending or descending order as per your own requirement
sender.queryBuildDataSource().addSortField(fieldNum(MyFormDataSource, DisplayOrder), SortOrder::Ascending);
}
--------------------------------------------------------------------------------------------------------------------
Step 1: Registering the Event Handler
The [FormDataSourceEventHandler] attribute links the method to the Initialized event of the form data source. In this example, the MyFormDataSource data source is targeted. This event is ideal for modifying query behavior before data retrieval.
Step 2: Clearing Existing Sorting
The sortClear() method removes all previously applied sorting criteria from the query. This ensures that only your custom sorting is applied.
Step 3: Applying Custom Sorting
The addSortField method applies sorting to the DisplayOrder field. You can customize the field and sort order (ascending or descending) based on your requirements.
Use Case: Imagine a grid that displays a list of tasks or items. If you want the rows to appear in the order of priority or any other logical sequence defined by a DisplayOrder field, this event handler ensures the sorting is applied automatically whenever the form loads.
Advantages:
Conclusion: Customizing grid sorting in D365FO is a powerful way to enhance user experience. By leveraging the Initialized event of the form data source, you can programmatically control how data is presented in the grid. Try this approach in your forms to make data presentation more intuitive and aligned with business needs.
Let us know in the comments if you found this tutorial helpful or if you have any questions! ??
Lead Digital Engineer at Sonata Software
2 个月Interesting and very helpful
EAPI
3 个月Useful tips