Skip to main content

AutoComplete Feature for Dynamics CRM 2016

AutoComplete is one of the most desired and advanced feature for Dynamics CRM 2016. It not only enhances customer experience but helps in fast and accurate entry of records.
AutoComplete can be implementedon simple text fields as well as for complex and composite fields (e.g. Composite Address fields).
The example given below is for implementation of “Autocomplete feature” in Dynamics CRM 2016for simple text field such as Country in Address Details. One may simply type few characters in the field and a list of country names is displayed in sorted manner.
Assume the simple text field on which we want to enable autocomplete feature is “na_country” and an entity CountryMaster(na_countrymasters) contains the master list of countries.
Create a web resource say “AddressDetails.js” which will have 2 methods:

Method 1:LoadAutoComplete


This method is executed at the time of ‘Form Load’ to get the list of all countries existing in Country Master (na_countrymasters) entity. We are using CRM web API to get a list of countries sorted by name. (How to use web API is another topic and we will go into details later.)
function LoadAutoComplete() {
if (Xrm.Page.getControl(“na_country”) != null) {
Xrm.Page.getControl(“na_country”).setDisabled(true);
}
var clientURL = Xrm.Page.context.getClientUrl();
var oDataPath = clientURL + “/api/data/v8.0/”
var req = new XMLHttpRequest();
req.open(“GET”, encodeURI(oDataPath + “na_countrymasters?$select=na_name,na_countryname&$orderby=na_name”), true);
req.setRequestHeader(“Accept”, “application/json”);
req.setRequestHeader(“Content-Type”, “application/json; charset=utf-8”);
req.setRequestHeader(“OData-MaxVersion”, “4.0”);
req.setRequestHeader(“OData-Version”, “4.0”);
req.onreadystatechange = function () {
if (this.readyState == 4) /* request complete*/ {
req.onreadystatechange = null;
if (this.status == 200) {
var reqResults = JSON.parse(this.response).value;
if (reqResults != null && reqResults.length > 0) {
var countries = [];
for (var i = 0; i < reqResults.length; i++) {
var country = reqResults[i];
countries.push({
id: country.na_countrymasterid,
name: country.na_name,
isocode: country.na_countryname,
fields: [country.na_name, country.na_countryname]
});
}
if (Xrm.Page.getControl(“na_country”) != null) {
Xrm.Page.getControl(“na_country”).setDisabled(false);
}
autoCompleteCountries(countries);
}
}
else {
var error = JSON.parse(this.response).error;
console.log(error.message);
}
}
};
req.send();
}
The above method calls the List of countries from Country Master entity and calls the second method AutoCompleteCountries().

Method 2: AutoCompleteCountries

This method works on “key press” event on Country field (The field on which autocomplete is applied)
function autoCompleteCountries(countries) {
var keyPressFcn = function (ext) {
try {
var userInput = Xrm.Page.getControl(“na_country”).getValue();
var resultSet = {
results: new Array(),
commands: {
id: “sp_commands”,
label: “Learn More”,
action: function () {
// Any help or other information URL
//window.open(“http://www.microsoft.com/en-us/dynamics/crm-customer-center/create-or-edit-an-account.aspx”);
}
}
};
var userInputLowerCase = userInput.toLowerCase();
for (i = 0; i < countries.length; i++) {
if (userInputLowerCase === countries[i].name.substring(0, userInputLowerCase.length).toLowerCase()) {
resultSet.results.push({
id: i,
fields: [countries[i].name, countries[i].isocode]
});
}
if (resultSet.results.length >= 10) break;
}
if (resultSet.results.length > 0) {
ext.getEventSource().showAutoComplete(resultSet);
}
else {
ext.getEventSource().hideAutoComplete();
}
} catch (e) {
console.log(e);
}
};
Xrm.Page.getControl(“na_country”).addOnKeyPress(keyPressFcn);
}

Setting in Dynamics CRM 2016:

Add the AddressDetails.js as new web resource in CRM.
Add this web resource to the form using form properties. Go to manage function and set LoadAutoComplete function on form Onload event

Publish the changes in CRM. Open the form and start entering letters in Country field. You should get the below autocomplete output
    please do get in touch with us at @
http://solzit.com/autocomplete-feature-fordynamics-crm-2016/@Solzit.com








Comments

Post a Comment

Popular posts from this blog

Dynamics CRM Development: Tips and Tricks – Calling a Workflow from Ribbon Button

There are a lot of quick ways of doing things in Dynamics CRM but developers struggle in finding how. Today I am going to explain how to call a workflow on a custom ribbon button. Let’s say you have a situation, where you want to perform some operation on customribbon button on “click event”. Let us take an example. I have a button on OPPORTUNITY form called‘ConfirmRequest ’. On the click event of this button I have to generate an ORDERandalso want to send an email. The best way to achieve this is by creating a workflow. Butthe issue is, how to call workflow on the button click. There are many solutions posted on the web, that involve using JavaScript, web resources etc. however there is a much easier way that requires no codin g. For this we use Ribbon Workbench. The same can be downloaded from the link  https://www.develop1.net/public/Download%20Ribbon%20Workbench%202013.aspx.  Download and install the solution in your CRM instance. Here are the steps to follow: ...

Migrate MS Dynamics CRM 2016 to MS Dynamics 365 with ease

Migrate MS Dynamics CRM 2016 to MS Dynamics 365 withease M icrosoft Dynamic s announced the launch of Dynamics 365 and bring all products under same umbrella somewhere towards the end of 2016. There seems to be a lot of curiosity and apprehensions amongst the users regarding working of the platform and transition from old system to new one. Being Microsoft Partners, we have upgraded systems for few of our clients and here are some of the learnings. The best part is that most of the update process is to be handled by Microsoft and was mostly uneventful for us. The major concerns being, how it will impact existing customizations, do we need to recode or customize. The existing workflows, plugins and javascripts will work or break. How much will the new platform support it. So here is a brief summary Preparationis the key to success! The crux of smooth transitioning lies in these words. Several Microsoft Dynamics CRM 2016 clients might have just finished their tran...

Auto Counter in CRM

For Microsoft Dynamics CRM 2015/2016 , one of the major challenges faced by developers is generating Auto numbers on various entities. To overcome this, Soluzione IT services releases  “Solz Auto Counter” solution to automate the process of adding counters to the CRM entities. It allows user to configure counter for default as well as custom entities. Here, you can put any prefix, suffix, counter zero padding and specified date formats with Auto numbering. You can set initial value of counter and its incremental value as well. At any point of time it can be activated or deactivated. You can also provide Security Role as per the user access in Dynamics CRM, it can be Read Only or Admin Access. One can configure the Auto counter as per the example given below. 1.Install the SolzAutoCounter solution in Dynamics CRM by importing the managed solution. After it is successfully installed you should have SolzAutoCounter in your solutions as below. 2.Clicking on the Auto Coun...