|
23.09.2013, 19:19 | #1 |
Участник
|
Отображение картинки на карточке продукта
Добрый день!
Есть скрипт на onLoad, который отображает картинку на карточке продукта после ее добавления в примечание к этому продукту. Скрипт работает, при добавлении примечания вручную. Но, к сожалению, не работает если примечания были созданы с помощью импорта. Т.е. вложенные файлы картинок в записях продуктов есть, но на форме картинка не отображается. Со скриптами только-только начал ознакамливаться, поэтому разобраться что тут не так не могу. Помогите пожалуйста, кто чем может Сам скрипт: function setImageToIframe(){ var image=null; var id=""; if (Xrm.Page.ui.getFormType()!=1){ id=Xrm.Page.data.entity.getId().replace("{","").replace("}",""); var filter="?$filter=ObjectId/Id eq (guid'" + id + "')&$orderby=CreatedOn desc" retrieveMultiple("AnnotationSet", filter, function(data){ if (data && data.length>0) { for(var i=0; i<data.length; i++){ if (data[i].MimeType=="image/gif" || data[i].MimeType=="image/pgif" || data[i].MimeType=="image/jpeg" || data[i].MimeType=="image/png" || data[i].MimeType=="image/ppng"|| data[i].MimeType=="image/pjpeg"){ image=data[i]; break; } } } }, null, false); } if (image!=null){ var el = document.getElementById("WebResource_picture"); document.getElementById("WebResource_picture").contentWindow.document.getElementById("image").src ="data:image/png;base64,"+image.DocumentBody; var url="http://имя_сервера/название_организации/notes/edit.aspx?id=%7b"+image.AnnotationId+"%7d&pId=%7b"+id +"%7d&pType=1024" Xrm.Page.getAttribute("new_imageurl").setValue(url); } else { Xrm.Page.getControl("WebResource_picture").setVisible(false); } } Заранее спасибо! |
|
24.09.2013, 09:23 | #2 |
Moderator
|
Скорее всего проблема в данных, а не в коде. Попробуйте импортировать и создать руками одну и ту же картинку и убедитесь что результат идентичен.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: Anton87 (1). |
24.09.2013, 10:50 | #3 |
Участник
|
Проблема здесь
Цитата:
if (image!=null){
var el = document.getElementById("WebResource_picture"); document.getElementById("WebResource_picture").contentWindow.document.getElementById("image").src ="data:image/png;base64,"+image.DocumentBody; var url="http://имя_сервера/название_организации/notes/edit.aspx?id=%7b"+image.AnnotationId+"%7d&pId=%7b"+id +"%7d&pType=1024" Xrm.Page.getAttribute("new_imageurl").setValue(url); } else { Xrm.Page.getControl("WebResource_picture").setVisible(false); } хотя он может быть и другим. Вы же проверяете на тип рисунка здесь: Цитата:
if (data[i].MimeType=="image/gif" || data[i].MimeType=="image/pgif" || data[i].MimeType=="image/jpeg" || data[i].MimeType=="image/png" || data[i].MimeType=="image/ppng"|| data[i].MimeType=="image/pjpeg"){
Вот так: Код: document.getElementById("WebResource_picture").contentWindow.document.getElementById("image").src ="data:"+image.MimeType+";base64,"+image.DocumentBody; |
|
24.09.2013, 13:54 | #4 |
Участник
|
Артем, в том то и дело, что при создании примечания руками одна и та же картинка отображается на карточке, а при импорте - нет.
Если примечание было создано импортом, то скрипт ведет себя так, как будто примечаний нет, то есть: } else { Xrm.Page.getControl("WebResource_picture").setVisible(false); } Spectr, к сожалению, это проблему не решает. Последний раз редактировалось Anton87; 24.09.2013 в 14:31. Причина: дополнено |
|
24.09.2013, 15:38 | #5 |
Участник
|
Цитата:
Сделайте еще Код: data[i].MimeType.toLowerCase()=="image/gif" 1) или примечание не крепится к нашему объекту 2) или его тип не попадает под выбор (ну тут еще toLowerCase можно попробовать) |
|
24.09.2013, 15:50 | #6 |
Участник
|
Да, импортированные примечания отображаются в записях
Цитата:
2) Тип документа под выбор подпадает, т.к. если выгрузить примечание и прикрепить его к этой же записи, то картинка отображается. |
|
24.09.2013, 16:38 | #7 |
Участник
|
Цитата:
Такое ощущение что MimeType нету. Поставьте после Код: for(var i=0; i<data.length; i++){ Код: alert(data[i].MimeType); |
|
|
За это сообщение автора поблагодарили: Anton87 (1). |
|
|