Saturday 20 May 2017

Custom Lookup Filtering in ADX/CRM Portal

As we all know that, Microsoft has given us the exciting new feature of being able to simply apply a custom filter to a lookup itself, meaning ALL views available in the lookup are filtered. In addition to this, we have also been given the ability to apply this filter immediately as the lookup is clicked, rather than on load or on change of the related fields.

OOB Lookup filtering is supported on Adxstudio and CRM Portal same like CRM.

But in few scenarios we cannot use CRM OOB Lookup Filter, we have to move towards Custom Lookup filter in CRM. But what about Portal where XRM Model is not supported yet ?

Custom Lookup Filtering is not supported on CRM Portal, but today in this article I am going to share a way through which we can achieve the Custom Lookup Filtering on Portal as well.

I would like to take a example here -

Requirement

Suppose I am exposing Account Entity Form on Portal, On this form I have a field 'Primary Contact', Requirement is to filter 'Primary Contact' based on Logged In User Account.

You would be thinking, if Portal supports CRM OOB Lookup Filtering then why we can't achieve it through OOB Lookup Filtering by keeping one Custom Account Lookup on Account form and filtered Primary Contact based on that.

Yes, you are right i was also thinking the same, but hold on "We cannot filtered record of any entity by keeping the lookup field of same entity" For example. We cannot Filtered Contacts based on Account by keeping one Account Lookup filed on Account entity itself.

Hope you understood this limitation in CRM, that's why we thought of to do the Custom Lookup Filter on Portal.

This is one requirement, you might come across other requirement also which require something similar like this.

So here is the way -


Step 1 : First of all Convert Lookup into Dropdown on which you want to apply Custom Lookup Filter. This you can make it possible through Entity Form Metadata.

You can have a look this link for more informationConvert CRM Lookup to Dropdown in CRM Portal.


Step 2 : Keep 'Parent Account' field on Account form (if you are not using it already for other purpose),
Note - If you have been using this field for other purpose, you can create custom Account lookup field also.


Step 3 : Intention for keeping this field on Account Form is to auto-populate logged In User's Account in this field.
For this Create one Entity Form Metadata on 'Account Entity Form' which will auto populate account's name of logged In User's in that field.

You can have a look this link for more information > How to auto populate data on Entity Form


Step 4 : So now we are done with all pre-requisites, Now the intent is to filter the dropdown and remove all the options from dropdown which we needs to filtered out or which we don't wants to be shown in dropdown list.

Here is the code to achieve the same -


$(document).ready(function () {

    //First we will get the Logged In User's Account (on the basis of that we have to filter 'Primary Contact'), which we have already stored on 'Parent Account' field using Entity Form Metadata. We kept this field only to get Logged In User's Account.
   
    // Get the Account Information (Guid) from that field
    var loggedInUserAccountGUID = $('#parentaccountid').val();

    // Get All accounts which does not belongs to logged in user's account
    var getContacts_FilteredOut = "/_odata/contacts/?$filter=parentcustomerid/Id%20ne%20(guid%27" + loggedInUserAccountGUID + "%27)";

    $.ajax({
        type: "GET",
        url: getContacts_FilteredOut,
        dataType: 'json'
    }).done(function (json) {

        // Got accounts collection which are not associated with logged In user's account
        var contactsColl = json.value;

        $.each(contactsColl, function (index, con)
        {
            // Remove these account from dropdown, so that only logged In user's account's contact will be rendered in dropdown
            if (con.contactid) {
                var contactGUID = con.contactid;

// We have removed the options instead of making it Hide, because IE browser does not support Hide/Show of dropdown options, We made it browser compatible.

                $("#primarycontactid option[value='" + contactGUID + "']").remove();
            }

        })
    })
});


Hope this article helps you, Please share your feedback and feel free to get in touch with my for any query.

5 comments:

  1. How to allow user to type a value on the lookup instars of clicking on search icon and launch the modal dialog

    ReplyDelete
  2. I have country and city dropdown...I used the same filter method you used on the change of country drop down ...the city dropdown removes some records but shows some extra record which are not related to them

    ReplyDelete
  3. Get the area Zip code lookup and postal code lookup from online. It is the easiest medium to search.

    ReplyDelete
  4. Fantastic post, very informative. I wonder why the other specialists of this sector do not notice this. You must continue your writing. I'm confident, you have a great readers' base already!
    Power filter power board

    ReplyDelete
  5. Special thanks to (hackingsetting50@gmail.com) for exposing my cheating husband. Right with me i got a lot of evidences and proofs that shows that my husband is a fuck boy and as well a cheater ranging from his text messages, call logs, whats-app messages, deleted messages and many more, All thanks to

    (hackingsetting50@gmail.com), if not for him i will never know what has been going on for a long time.

    Contact him now and thank me later.

    ReplyDelete

Blogger Widgets