Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件

上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传、显示及下载。包括以下几个步骤:

  • 附件上传的web页面
  • 附件显示及下载的附件实体
  • 调用上传web页面的JS文件
  • 实体上r的上传按钮

 

  • 首先来看一下效果:

先点击上面的上传按钮,然后就会弹出一个上传附件的界面,选择需要上传的文件,填写文件名,点击上传,成功后会在下面的文件grid里显示已上传的文件,双击下面的文件就会打开文件的详细信息:

然后还可以下载文件。

 

  • 下面来看下实现方法

1. 附件上传的web页面

新建一个普通的web程序,加上一个aspx页面用于实现文件上传,这里用的是jquery里的uplodify:

这是实现上传的js代码

  1:  $( document ).ready( function ()
  2:         {
  3:             uploadFiles();
  4:         } );
  5:
  6:         function uploadFiles()
  7:         {
  8:             $( "#uploadify" ).uploadify( {
  9:                 ‘swf‘: ‘Scripts/upload/uploadify.swf‘,
 10:                 ‘uploader‘: ‘uploader.ashx‘,
 11:                 ‘queueID‘: ‘fileQueue‘,
 12:                 ‘auto‘: false,
 13:                 ‘multi‘: true,
 14:                 ‘onUploadError‘: function ( file, errorCode, errorMsg, errorString )
 15:                 {
 16:                     alert( ‘The file ‘ + file.name + ‘ could not be uploaded: ‘ + errorString );
 17:                 },
 18:                 ‘onUploadSuccess‘: function ( file, data, response )
 19:                 {
 20:                     $( ‘<li><a href="‘ + data + ‘">‘ + file.name + ‘</a></li>‘ ).appendTo( $( ‘ul‘ ) );
 21:                 }
 22:             } );
 23:         }
 24:
 25:         function Upload()
 26:         {
 27:             $( ‘#uploadify‘ ).uploadify( ‘upload‘, ‘*‘ );
 28:         }

这是页面上显示的内容:

  1:   <table class="GbText">
  2:             <tr>
  3:                 <td>
  4:                    <input type="file" name="uploadify" id="uploadify" />
  5:                 </td>
  6:                 <td>
  7:                     <input type="button" value="Upload Files" class="uploadify-button" style="height:25px; width: 112px;"  onclick="javascript: $( ‘#uploadify‘ ).uploadify( ‘upload‘, ‘*‘ )" />
  8:                     <input id="yes" class="Button" onclick="UpFiles();" onmouseout="this.className=‘Button‘" onmouseover="this.className=‘Button-Hover‘" style="width:50px" type="button" value="Confirm" />
  9:                 </td>
 10:             </tr>
 11:             <tr>
 12:                 <td colspan="2">
 13:                     <ul id="ul"></ul>
 14:                 </td>
 15:             </tr>
 16:         </table>
 17:     <div id="fileQueue">

最后把它放到ISV下面:

 

2. 附件实体

  • 字段

红框中的字段为lookup类型,需要实现上传功能的实体的id,其余为基本字段

 

  • 界面

中间红框中是一个iframe, 其它没什么介绍的:

 

  • 调用上传web页面的JS文件
  1: var uploadCfg = {
  2:     fileFloder: Xrm.Page.data.entity.getEntityName(),
  3:     entityReferenceName: Xrm.Page.data.entity.getEntityName() + "id",
  4:     entityName: Xrm.Page.data.entity.getEntityName().toLowerCase()
  5: };
  6:
  7: function uploadFile() {
  8:     var openURL = "/ISV/FilesUpload/FileUpload.aspx?FileFolder=" + uploadCfg.fileFloder + "&EntityName=" + uploadCfg.entityName
  9:         + "&EntityReferenceName=" + uploadCfg.entityReferenceName + "&EntityId=" + Xrm.Page.data.entity.getId()
 10:         + "&UserId=" + Xrm.Page.context.getUserId();
 11:     window.showModalDialog(openURL, "_blank", "dialogWidth=500px;dialogHeight=300px;help:no;status:no");    //打开模态窗体
 12: }

 

  • 上传按钮

添加按钮并指定function名uploadFile

 

 

 

Dynamic CRM 2013学习笔记 系列汇总

时间: 2024-07-31 14:21:21

Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件的相关文章

Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理

上次介绍过节点的基本配置<Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置>,这次介绍下规则节点,因为有时流程里会有一些分支.合并,这时就要用到规则节点.下面根据一个真实的流程图来讲解如何配置规则节点:   一.先分析流程图 上面30,40就是规则节点,因为是有条件进入的. 其中40要拆分成一个普通节点,一个规则节点:普通节点是从上面直接下来的流程,规则节点是从右边下来有条件的流程   二.模板里的流程节点定义 根据上面的流程分析,我们定义下面的流程节点,其

Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试

我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们调试js,发布js文件也是比较繁琐的事情,最好的办法是全部调好,再发布上去,本文介绍用firefox + firebug + frame可以很方便地调试CRM js,全部调好后,再上传js,明显可以加快开发的速度. 1. 智能提示 CRM相关的方法属性的vs 里加上XrmPageTemplate.j

Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示,及firebug frame调试

我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们调试js,发布js文件也是比较繁琐的事情,最好的办法是全部调好,再发布上去,本文介绍用firefox + firebug + frame可以很方便地调试CRM js,全部调好后,再上传js,明显可以加快开发的速度.   1. vs 里加上XrmPageTemplate.js: http://yunp

Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动

当我们在流程里添加步骤时,有一些默认的步骤,像创建.更新.发邮件等,但如果你想加一个里面没有的步骤,比如发SMS消息,或者调用一个外部的web service,怎么办?这时就只能自定义一个流程活动了.下面将详细介绍如何创建一个自定义的流程活动.   1. 打开vs2012,新建一个项目:   需要引用CRM 的二个dll :  Microsoft.Xrm.Sdk;  Microsoft.Xrm.Sdk.Workflow;   2. 删除默认的 Activity1. xaml ,新建一个类: us

Dynamic CRM 2013学习笔记(二十八)用JS动态设置字段的change事件、必填以及可见

我们知道通过界面设置字段的change事件,是否是必填,是否可见非常容易.但有时我们需要动态地根据某些条件来设置,这时有需要通过js来动态地控制了. 下面分别介绍如何用js来动态设置.   一.动态设置字段的change事件 // form on load event function onLoad() { init();   pageAttr.delivery_from.addOnChange(deliveryFromChange); pageAttr.type.addOnChange(typ

Dynamic CRM 2013学习笔记(十八)根据主表状态用JS控制子表自定义按钮

有时要根据主表的审批状态来控制子表上的按钮要不要显示,比如我们有一个需求审批通过后就不能再上传文件了. 首先打开Visual Ribbon Editor, 如下图,我们可以利用Enable Rules –> CustomRule 用js来控制按钮是否显示:   js function: 首先用odata取出主表的状态,然后根据主表的状态来判断是否显示: var approvalStatus = null; function controlUpload(){ var marketingPlan =

Dynamic CRM 2013学习笔记(十四)复制/克隆记录

经常有这样的需求,一个单据上有太多要填写的内容,有时还关联多个子单据,客户不想一个一个地填写,他们想从已有的单据上复制数据,克隆成一条新的记录.本文将介绍如何克隆一条记录,包括它的子单据以生成一条新的记录. 主要用到Microsoft.Xrm.Client.EntityExtensions.Clone方法来克隆数据,以及用OrganizationServiceContext来动态复制子单据的数据. 首先在界面上新加一个Clone的按钮,加一个new_clone的字段:点击按钮时,把new_clo

Dynamic CRM 2013学习笔记(三十四)自定义审批流5 - 自动邮件通知

审批过程中,经常要求自动发邮件:审批中要通知下一个审批人进行审批:审批完通知申请人已审批完:被拒绝后,要通知已批准的人和申请人.下面详细介绍如何实现一个自动发邮件的插件:   1. 根据审批状态来确定要通知哪个人或哪个角色 状态为2 - 审批中时,查找下一个审批人 /// <summary>/// 下一个审批人/// </summary>/// <returns></returns>private List<Guid> GetNextStepPe

Dynamic CRM 2013学习笔记(二十九)reporting service 常见问题

在报表开发过程中,经常会遇到各种各样的问题,比如The report cannot be displayed. (rsProcessingAborted),一点有意义的提示都没有:再就是分页问题,经常我们想把一条记录放在一页,下一条记录另起一页,而不是紧连在上一条记录的后面:有时我们还会出现上传报表时报错:An error occurred while trying to add the report to Microsoft Dynamics CRM. Try adding the repor