Introduction
This article demonstrates how to query the entities in
Dynamics CRM using jQuery call and OData feeds from ADX Portal.
Steps to get records from Dynamics
CRM entities:
It is difficult to get
the Dynamics CRM Entities from ADX Portal using any Web API call, because that
may require authorization token, client id and client secret etc. Also, you
will not be able to get any client context or to use XRMServiceToolKit.
ADX Portal user can be
just a contact in Dynamics CRM and would not be a user in CRM domain. In this scenario, he will not be having access
to Dynamics CRM entities directly. He
will be able to see the entities that are published in the ADX portal.
Here in the below
example the user registers himself with the invitation code created
in Dynamics CRM for Portal User having non-CRM domain email address (ex: Yahoo
/ Gmail / Hotmail).
Step: 1 Create
a contact in Dynamics CRM with the external email address and then generate the
invitation code for that contact.
Step: 2 With that
Invitation code new user can be registered in the ADX portal.
Step: 3 Select
the Dynamics CRM entities that you want to query from ADX Portal. Go to the
Portals in Dynamics CRM and then select the Entity list to add entities that
are to be published to ADX Portal as OData Feeds.
Step: 4 Also
enable Entity Permissions to restrict the OData Feeds can be viewed by logged
in Portal User.
Step: 5 Now go to
the Custom JavaScript section in Entity list form or Web Page (Portals) use the
ajax call for querying the OData feeds as shown below.
$(document).ready(function
(){
var portaluser = '{{user.fullname}}';
var filteroption = "fullname eq
'" + portaluser + "'";
var odataUri = "https://<Portal URL>/_odata/Contacts";
odataUri += "?$filter=" +
encodeURIComponent(filteroption);
// ajax call to OData feeds of Contacts entity
with the filter for finding current logged in user’s record
$.ajax({
type: 'GET',
contentType: 'application/json;
charset=utf-8',
datatype: 'json',
url:
odataUri,
beforeSend: function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader('Accept', 'application/json');
},
async: true,
success: function
(data, textStatus, xhr) {
// Getting the company (Account) name that he belongs to
var companyname =
data.value[0].parentcustomerid.Name;
$(".entitylist.entity-grid").on("loaded", function
() {
$(this).children(".view-grid").find("td[data-attribute='new_name']").each(function
(i, e){
var attrvalue = $(this);
//
To remove other company’s records from the custom entity list view
if
(!(attrvalue.context.innerText.contains(companyname))){
$(this).closest('tr').remove();
}
});
});
},
error: function (xhr, textStatus,
errorThrown) {
alert(textStatus + ' ' +
errorThrown);
}
});
});
Output:
Measure Details View in CRM
Portal: The output displays only the records belongs
to the account he is linked with.
Summary
In this article, I discussed how we can publish the entity
as OData feeds and make use of ajax call to find records from the OData feeds.
Hope it will be useful for you all, very soon will be back with a new article.
This is filtering the Grid but now showing the first page of Grid.
ReplyDeletecan you tell me how to remove pagination from grid and filter the records.