Identify the trigger for an On-load event for Sub-grid in Dynamics CRM

By | November 30, 2015

Introduction:

With CRM 2015 SP1, the Client API was extended to allow attaching events to sub-grid to manage the sub-grid data/operations.

The OnLoad event however executes on all of the following operations

  1. Load of parent form.
  2. Save of parent form.
  3. Add a new record in sub-grid
  4. Remove a record from sub-grid
  5. Navigating to prev/next page in sub-grid.

When we register a method on the OnLoad event, it does not indicate in any way which of the above actually fired the onload event.

Workaround to Identifying the operation

We cannot register an event when the record is added/removed from the sub-grid. The only event available is onload, so one way to identify if it was one of the add/remove operations that caused the grid to call the onload event, we can keep a check on the count of records in the grid.

We can register the onload event using the following code

//This function is executed onload event of form

The rowCount is defined as global variable and is updated here to store the count of records in the grid when the form is loaded initially.

//This function calls the intended function on load of subgrid

Conclusion:

In this way we can identify if a record is added or removed from sub grid in Dynamics CRM 2015 SP1.

Before you move on to the next post, check this Inogic Dynamics CRM Solutions – Change the Pace of your Business Decisions.

6 thoughts on “Identify the trigger for an On-load event for Sub-grid in Dynamics CRM

    1. inogic Post author

      From the face of it we cannot retrieve the record that is added or subtracted from the sub grid.
      We can only detect if a record is added or subtracted using the above code.

      1. abed

        Thanks for this useful post!

        what if I have more than one subgrid into on entity and I want to refresh the form after adding or removing any records on the entity subgrids, is it possible?

        1. inogic Post author

          Yes, we can refresh the form after adding or removing any records on the entity sub grids.

          For example, if we have two sub grids on the entity form then create two global variables, store the row count of sub grids in those variables on load event of CRM form and compare them with current row count of sub grids in the “onGridLoad” function which is registered on “addOnLoad” event of the sub grids as explained in the above blog.

          Hope this helps.

          1. abed

            Thanks,
            Shall I add Xrm.Page.data.refresh(false); instead of dosomething(); in your code for getting the parent refresh?

          2. inogic Post author

            Yes, You need to add the code or call the function you want to execute on adding or removing records from the sub grid instead of dosomething(); in above code.
            Hope this helps.

Leave a Reply