dynamics crm 365 附件上传图片并且显示。
参考了几篇博客做的:
新增websource文件(html):
<!DOCTYPE html>
<html>
<head>
<title>注释</title>
<style type="text/css">
table {
border:1px solid #666666;
border-collapse:collapse;
}
table thead th {
padding: 8px;
border:1px solid #666666;
background-color: #dedede;
} table tbody td {
border: 1px solid #666666;
padding: 8px;
background-color: #ffffff;
} table thead tr th {
font-family:Microsoft YaHei,SimSun,Tahoma,Arial;
font-size:12px;
font-weight:bold;
color:#000000;
} table tbody tr td {
color:#444444;
font-family:Microsoft YaHei,SimSun,Tahoma,Arial;
font-size:12px;
} .align_right
{
text-align: right;
} </style>
<script type="text/javascript" src="../../_static/_common/scripts/jquery1.7.2.min.js"></script>
<script type="text/javascript" src="../../_static/_common/scripts/XrmServiceToolkit.min.js"></script>
<script type="text/javascript"> Date.prototype.format = function (fmt) {
var o = {
"M+": this.getMonth() + 1,//月份
"d+": this.getDate(),//日
"h+": this.getHours(),//小时
"m+": this.getMinutes(),//分
"s+": this.getSeconds()//秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ?
(o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
} function ShowAttachmentByNoteId(NoteId) {
XrmServiceToolkit.Rest.Retrieve(
NoteId,
"AnnotationSet",
"DocumentBody,MimeType",
null,
function (result) {
var DocumentBody = result.DocumentBody;
var MimeType = result.MimeType;
if (MimeType.indexOf("image") > -1) { //new method
initblock(DocumentBody,MimeType);
}
else {
alert('附件不是图片,目前无法提供查看!');
}
},
function (error) {
alert(error.message);
},
true
);
} function initblock(DocumentBody,MimeType)
{
if($("#overlay").length > 0) {
$("#overlay").empty();
} if($("#dialogImg").length > 0) {
$("#dialogImg").empty();
} var div = parent.document.createElement("div");
div.id = "overlay";
div.style.position="fixed";
div.style.top="0";
div.style.right="0";
div.style.bottom="0"; div.style.left="0"; div.style.height="100%";
div.style.width="100%";
div.style.margin="0";
div.style.padding="0";
div.style.background=" #000000";
div.style.opacity=".15";
div.style.filter=" alpha(opacity=15)";
div.style.display="none";
parent.document.body.appendChild(div); var divImg =parent.document.createElement("div");
divImg.id = "dialogImg";
divImg.style.display="none";
divImg.style.position="fixed";
divImg.style.width="250px";
divImg.style.height="280px";
divImg.style.top="20%";
divImg.style.left="20%";
divImg.style.right="20%";
divImg.style.bottom="20%";
divImg.style.marginLeft="-190px";
divImg.style.marginTop="-100px";
divImg.style.backgroundColor="#ffffff";
divImg.style.border="0px";
divImg.style.borderStyle="solid";
divImg.style.fontFamily="Verdana";
divImg.style.fontSize="10pt";
divImg.style.padding="0";
divImg.style.zIndex="102"; var table = parent.document.createElement("table");
table.style.width = "100%";
table.style.border = "0";
table.cellPadding = "2";
table.cellSpacing = "0";
var tr1 = parent.document.createElement("tr");
var td1 = parent.document.createElement("td");
td1.style.borderBottom="solid";
td1.style.border="0px";
td1.style.borderColor="#2a1d54";
td1.style.backgroundColor="#2a1d54";
td1.style.padding="4px";
td1.style.color="White";
td1.style.fontWeight="bold";
td1.innerText = "照片预览";
var td11 = parent.document.createElement("td");
td11.style.textAlign = "right"
td11.style.borderBottom = "solid";
td11.style.border = "1px";
td11.style.borderColor = "#2a1d54";
td11.style.backgroundColor = "#2a1d54";
td11.style.padding = "4px";
var a1 = parent.document.createElement("a");
a1.style.color = "White";
a1.style.fontWeight = "bold";
a1.innerText = "关闭";
a1.id = "btnCloseImg";
a1.href = "#";
a1.onclick = function (e) {
debugger;
$("#overlay",parent.document).hide();
$("#dialogImg",parent.document).fadeOut(300);
e.preventDefault();
}
td11.appendChild(a1);
tr1.appendChild(td1);
tr1.appendChild(td11);
var tr2 = parent.document.createElement("tr");
var td2 = parent.document.createElement("td");
td2.colSpan = "2"; var img = parent.document.createElement("img");
img.id = "img1";
td2.appendChild(img);
tr2.appendChild(td2);
table.appendChild(tr1);
table.appendChild(tr2);
divImg.appendChild(table);
parent.document.body.appendChild(divImg); $("#overlay",parent.document).show();
$("#dialogImg",parent.document).fadeIn(300);
$("#img1",parent.document).attr("alt", "Embedded Image");
$("#img1",parent.document).attr("src", "data:" + MimeType + ";base64," + DocumentBody);
$("#overlay",parent.document).unbind("click");
//e.preventDefault(); dragPanelMove();
} function dragPanelMove(){
var dialogImg = $("#dialogImg",parent.document);
dialogImg.mousedown(function(e){
//设置移动后的默认位置
var endx=0;
var endy=0; //获取div的初始位置,要注意的是需要转整型,因为获取到值带px
var left= parseInt(dialogImg.css("left"));
var top = parseInt(dialogImg.css("top")); //获取鼠标按下时的坐标,区别于下面的es.pageX,es.pageY
var downx=e.pageX;
var downy=e.pageY; //pageY的y要大写,必须大写!! // 鼠标按下时给div挂事件
dialogImg.bind("mousemove",function(es){ //es.pageX,es.pageY:获取鼠标移动后的坐标
var endx= es.pageX-downx+left; //计算div的最终位置
var endy=es.pageY-downy+top; //带上单位
dialogImg.css("left",endx+"px").css("top",endy+"px")
});
}) dialogImg.mouseup(function(){
//鼠标弹起时给div取消事件
dialogImg.unbind("mousemove")
}) } $(function () { var id = window.parent.Xrm.Page.data.entity.getId(); //这种方法可以获取表单中的很多信息,包括id XrmServiceToolkit.Rest.RetrieveMultiple(
"AnnotationSet", "?$select=AnnotationId,Subject,NoteText,MimeType,FileName,FileSize,IsDocument,CreatedOn,CreatedBy,ModifiedOn,ModifiedBy&$filter=ObjectId/Id eq guid'" + id + "'&$orderby=CreatedOn asc",
function (results) {
for (var i = 0; i < results.length; i++) {
var tr = $("<tr></tr>");
tr.appendTo($("#notestable tbody"));
var td = $("<td>" + (i+1) + "</td>");
td.appendTo(tr);
td = $("<td>" + (results[i].Subject == null ? "" : results[i].Subject) + "</td>");
td.appendTo(tr); td = $("<td>" + results[i].CreatedBy.Name + "</td>");
td.appendTo(tr);
td = $("<td>" + results[i].CreatedOn.format('yyyy-MM-ddThh:mm:ssZ') + "</td>");
td.appendTo(tr);
td = $("<td>" + results[i].ModifiedBy.Name + "</td>");
td.appendTo(tr);
td = $("<td>" + results[i].ModifiedOn.format('yyyy-MM-ddThh:mm:ssZ') + "</td>");
td.appendTo(tr);
td = $("<td>" + (results[i].IsDocument ? "是" : "否") + "</td>");
td.appendTo(tr);
td = $("<td>" + (results[i].FileName == null ? "" : ("<a href='#' data-annotationid='" + results[i].AnnotationId + "'>" + results[i].FileName + "</a>") + "</td>"));
td.find("a").click(function() {
ShowAttachmentByNoteId($(this).attr("data-annotationid"));
});
td.appendTo(tr);
td = $("<td>" + (results[i].FileSize == null ? "" : Math.round((results[i].FileSize)/1024)) + "</td>");
td.appendTo(tr);
}
},
function (error) {
alert(error.message);
},
function () {
},
true
);
$("#dialogclosebtn").click(function (e) {
HideDialog();
e.preventDefault();
});
});
</script>
</head>
<body>
<table id="notestable">
<thead>
<tr>
<th>序号</th>
<th>注释标题</th>
<th>创建人</th>
<th>创建时间</th>
<th>修改人</th>
<th>修改时间</th>
<th>是否包含附件</th>
<th>附件名称</th>
<th>附件大小(KB)</th>
</tr>
</thead>
<tbody>
</tbody>
</table> </body>
</html>
dynamics crm 365 附件上传图片并且显示。的更多相关文章
- Dynamics CRM 365 不用按钮工具,直接用js脚本控制按钮的显示隐藏
Dynamics CRM 365 不用按钮工具,直接用js脚本控制按钮的显示隐藏: try { // 转备案按钮 let transferSpecialRequestButton = parent.p ...
- Dynamics CRM邮件附件,你真的了解吗?
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复160或者20151014可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 听人问起怎么读取到一封邮件所有的 ...
- Dynamics CRM 在表单上显示更改历史记录(审核历史记录)
前言 虽然Dynamics CRM自带的审计很好,但是对于缺乏使用CRM经验的用户来说,自带的UCI界面实在是太隐藏了: 于是乎就出现了需求:想通过在表单上直接看到看审计历史记录: 在网上搜索了很多中 ...
- Dynamics CRM 365中结合注释和WebApi实现图片上传
首先需要在实体上使用注释,然后在窗体上引用WebResource. WebResource的代码: <!DOCTYPE html> <html> <head> &l ...
- Dynamics CRM 365常用js记录。
var entityname =window.parent.Xrm.Page.data.entity.getEntityName();//获取实体名称 var sampid = window.pare ...
- Dynamics CRM 2016/365 窗体中添加按钮
一.工具下载,及界面介绍 1.下载XrmToolBox工具(XrmToolBox for Microsoft Dynamics CRM/365 CE) 链接:https://www.xrmtoolbo ...
- Dynamics CRM中的注释(Note)及RollupRequest消息初探
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复161或者20151015可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 注释,这个实体的架构名称是Ann ...
- Dynamics CRM通过定制应用程序功能区为符合条件的实体表单增加按钮
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复167或者20151029可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 前面的博文都是为一个实体添加按钮 ...
- 为Dynamics CRM注释的图片附件做个预览功能
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复163或者20151017可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! Dynamics CRM中注释可 ...
随机推荐
- ceph中pool的管理
1.创建pool 创建ceph pool的命令如下,它的参数包括pool名字.PG和PGP的数量. 若少于5个OSD, 设置pg_num为128. 5~10个OSD,设置pg_num为512. 10~ ...
- 设计模式21:State 状态模式(行为型模式)
State 状态模式(行为型模式) 动机(Motivation) 在软件构建过程中,某些对象的状态如果改变,其行为也会随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态的行为就可能完全不同. ...
- Understanding sun.misc.Unsafe
转自: https://dzone.com/articles/understanding-sunmiscunsafe The biggest competitor to the Java virtua ...
- Android-显示意图和隐式意图
显示意图,一般情况下是用于,APP应用自身:组件(Activity,Service,...) 与 组件(Activity,Service,...) 的激活调用: 显示意图,是可以看得到,明确激活哪一个 ...
- sudo -s/sodo -i/su root
sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过有时间限制,Ubuntu默认为一次时长15分钟.su : 切换到某某用户模式,提 ...
- [转]Control的Invoke和BeginInvoke
转自:Control的Invoke和BeginInvoke 作者:Kuffy Wang 近日,被Control的Invoke和BeginInvoke搞的头大,就查了些相关的资料,整理如下.感谢这篇文 ...
- C#利用ntsd.exe关闭进程
有时我们会发现在任务管理器中无法关闭某个进程,可以使用下面的方法强行关闭,注意不要杀掉进程表中的系统核心进程: 1.使用Windows XP/2000自带的工具 从Windows 2000开始,Win ...
- getpost请求
// GET请求与获取结果 /// </summary> public static string HttpGet(string Url, string postDataStr) { Ht ...
- mysql 循环插入
在mysql添加测试数据,想和mssql一样用循环实现,发现不管怎么样都执行失败 经查询发现mysql不支持匿名块,只能先创建出一个存储过程,执行,然后删除 CREATE PROCEDURE test ...
- python基本算法
算法优劣评判标准 时间复杂度: 定义:用来评估算法运行效率的一个式子 print('Hello World') O(1) for i in range(n): print('Hello World') ...