31/1/13

Incluir una imagen en un formulario

Esta personalización es un clásico popular: se trata de añadir un mini-panel en el formulario de alguna entidad de CRM (contacto, cuenta, etc.) que muestre una imagen. Un ejemplo podría ser mostrar el logotipo de una empresa en el formulario de Cuenta o la foto de una persona en el formulario de Contacto. Esta aproximación es simplista (para variar) y simplemente toma la primera nota asociada al registro y que sea de tipo imagen (jpeg). Requiere que el formulario tenga previamente añadido un WebResource de tipo HTML y de nombre imageContainer. El código siguiente iría en el evento OnLoad del formulario contenedor:

$(function () {
    var ctx = GetGlobalContext();
    var page = window.parent.Xrm.Page;
    objectId = page.data.entity.getId();
    if (objectId == null)
        return;


    SDK.JQuery.retrieveMultipleRecords(
     "Annotation",
     "$top=1&$orderby=CreatedOn desc&$select=DocumentBody&$filter=MimeType eq 'image/pjpeg' and ObjectId/Id eq (guid'" + objectId + "')",
     function (results) {
         var note = results[0];
         $("#imageContainer").attr("src", "data:image/pjpeg;base64," + note.DocumentBody);
     },
     errorMessageHandler,
     function () { }
   );

});

 function errorMessageHandler(error) {
     alert('Error: ' + error.message);
 }