Display tooltips for fields in MS CRM – Part 1

October 14, 2010 by  

There is simple way to set tooltip text for field on CRM form. You can do it with following script placed on OnLoad event handler of some CRM form:

crmForm.all.<field name>_c.title = 'Tooltip text';
crmForm.all.<field name>_d.title = 'Tooltip text';

It will be hard work to create detailed tooltips for all fields placed on form using this script. Andriy Butenko has developed a script which will set the fields tooltip based on description of the attribute in the metadata.

image

image

To make this possible copy following script to OnLoad event of the form:


//*********************************************************
gSetTooltips = function(){   

 /*
 Description: This function is used to set the tooltips based on the attributes desctiption in the metadata
 Returns:   nothing
 Example 1 :  gSetTooltips()
 Designed by:  Andriy Butenko (www.a33ik.blogspot.com)
 */

 var request = "" +    
 "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +   
 "<soap:Envelope xmlns:soap=\'http://schemas.xmlsoap.org/soap/envelope/\'" +
 " xmlns:xsi=\'http://www.w3.org/2001/XMLSchema-instance\' xmlns:xsd=\'http://www.w3.org/2001/XMLSchema\'>" +   
 GenerateAuthenticationHeader() +   
 "  <soap:Body>" +     
 "    <Execute xmlns=\'http://schemas.microsoft.com/crm/2007/WebServices\'>" +   
 "      <Request xsi:type=\"RetrieveEntityRequest\">" +   
 "        <RetrieveAsIfPublished>true</RetrieveAsIfPublished>" +   
 "        <EntityItems>IncludeAttributes</EntityItems>" +   
 "        <LogicalName>" + crmForm.ObjectTypeName + "</LogicalName>" +   
 "      </Request>" +   
 "    </Execute>" +   
 "  </soap:Body>" +    
 "</soap:Envelope>";   
 
 var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");   
 xmlHttpRequest.Open("POST", '/mscrmservices/2007/MetadataService.asmx', false);   
 xmlHttpRequest.setRequestHeader("SOAPAction",'http://schemas.microsoft.com/crm/2007/WebServices/Execute');   
 xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");   
 xmlHttpRequest.setRequestHeader("Content-Length", request.length);   
 xmlHttpRequest.send(request);   
 
 var result = xmlHttpRequest.responseXML;   
 for(var i = 0; i < crmForm.all.length; i++)   
 if(crmForm.all[i].title != null && crmForm.all[i].title != 'undefined'){       
  var fieldName = crmForm.all[i].id;       
  var desc = result.selectSingleNode("//EntityMetadata/Attributes/Attribute[LogicalName='" + fieldName + "']/Description/UserLocLabel/Label");       
  try{           
   if(desc != null){               
    crmForm.all[fieldName + '_c'].title = desc.nodeTypedValue;               
    //crmForm.all[fieldName + '_d'].title = desc.nodeTypedValue;            //activate this line if you want to display title on field as well
   }       
  }       
  catch(e) {}   
 }
}

Related Posts:
Display tooltips for fields in MS CRM – Part 2
Display tooltips for fields in MS CRM – Part 3 (for CRM2011)

Comments

You must be logged in to post a comment.