2

I have used the WebResource on the Page and I am getting an error Object doesn't support property or method 'setSrc' in Javascript

Can you Please help me

My actual code is like this

function getImage()
{
var entityId = Xrm.Page.data.entity.getId();
var profilePictureElement = Xrm.Page.getControl("WebResource_ProfilePicture");
if (entityId) {
    var oDataQuery = getServerUrl() + "/XRMServices/2011/OrganizationData.svc" +
        "/AnnotationSet?$top=1&$select=AnnotationId,DocumentBody,MimeType&" +
        "$orderby=ModifiedOn desc&$filter=ObjectId/Id eq guid'" + entityId +
        "' and IsDocument eq true and Subject eq 'Profile Picture'" +
        " and startswith(MimeType,'image/') ";

    $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: oDataQuery,
        beforeSend: function (request) { request.setRequestHeader("Accept", "application/json"); },
        success: function (data, textStatus, request) {
            if (data.d.results.length > 0) {
                var mimeType = data.d.results[0].MimeType;
                var body = data.d.results[0].DocumentBody;
                // set src attribute of default profile picture web resource.
                // here we use DataURI schema which has 32kb limit in IE8 and doesn't support IE <= 7.
                profilePictureElement.setSrc("data:" + mimeType + ";base64," + body);

            }
        },
        error: function (request, status, exception) { }
    });
  }
}
function getServerUrl()
{
var serverUrl = Xrm.Page.context.getServerUrl();
// trim trailing forward slash in url
return serverUrl.replace(/\/*$/, "");
}

you can refer the whole article from here http://blogs.msdn.com/b/crm/archive/2011/09/28/displaying-a-contact-s-facebook-picture-in-microsoft-dynamics-crm-2011.aspx?CommentPosted=true#commentmessage

Guido Preite
  • 14,905
  • 4
  • 36
  • 65
Kartik Patel
  • 9,303
  • 12
  • 33
  • 53

1 Answers1

1

Looks like that now the methods getSrc and setSrc can be used against a Web Resource only when refer to an HTML content.

If the Web Resource is an image, the crm will use an img tag to display the picture.

If you want to make that code working you need to retrieve the img element and assign the src property manually:

instead of

profilePictureElement.setSrc("data:" + mimeType + ";base64," + body);

you need to write

var profilePicture = document.getElementById("WebResource_ProfilePicture");
profilePicture.setAttribute("src","data:" + mimeType + ";base64," + body);

note: this is an unsupported customization

Guido Preite
  • 14,905
  • 4
  • 36
  • 65