博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能...
阅读量:5977 次
发布时间:2019-06-20

本文共 2119 字,大约阅读时间需要 7 分钟。

前面介绍过如何克隆一条当前的记录: , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现的。

那么,如果要在list (homepage)界面实现多条记录的克隆,这时就不方便加字段以触发插件了。这时我们可以用js调用web service的方式来实现。下面介绍详细的步骤:

 

1. List界面添加按钮

  • 要注意不是form界面:

 

  • 添加按钮:

跟普通添加按钮一样,注明function,js文件,然后要加上参数 - 选中了哪些记录

这个参数只记录了所有选中的记录的id

 

这个参数记录了所有选中的记录

 

2. JS方法

// clone to credit note
function homePageCloneCreditNote(selectedItems) {
debugger;
if (selectedItems.length < 1) {
return;
}
 
var txt = "";
for (var i = 0; i < selectedItems.length; i++) {
txt += '"' + selectedItems[i] + '"';
if (i != selectedItems.length - 1) {
txt += ',';
}
}
 
var ids = "[" + txt + "]";
var data = '{ userId: "' + Xrm.Page.context.getUserId() + '", ids: ' + ids + '}';
var url = "/ISV/InternalWebServices/CreditNoteService.asmx/CloneCreditNote";
$.ajax({
url: url,
type: "POST",
contentType: "application/json; charset=utf-8",
data: data,
success: function (json) {
var result = json.d;
if (result.indexOf("success") >= 0) {
Xrm.Utility.openEntityForm("new_credit_note", result.replace("success", ""));
}
else {
alert(result);
}
},
error: function (x, e) {
alert("error" + e.responseText);
}
});
}

这里可以看到service的path: /ISV/InternalWebServices/CreditNoteService.asmx/CloneCreditNote, 也就是说我们把service放到了ISV下。

克隆完成后自动跳转到新的记录。

 

3. web service

  • 初始化
public void InitService()
{
Uri orgServiceUri = new Uri(CRMServiceUrl + "/XRMServices/2011/Organization.svc");
ClientCredentials credentials = new ClientCredentials();
if (CRMAuthenticationType == "AD")
{
credentials.Windows.ClientCredential = new System.Net.NetworkCredential(CRMUserName, CRMUserPassword, CRMUserDomainName);
}
else if (CRMAuthenticationType == "ADFS")
{
credentials.UserName.UserName = CRMUserDomainName + "\\" + CRMUserName;
credentials.UserName.Password = CRMUserPassword;
}
OrganizationServiceProxy crmServiceProxy = new OrganizationServiceProxy(orgServiceUri, null, credentials, null);
crmServiceProxy.EnableProxyTypes();
m_CrmService = (IOrganizationService)crmServiceProxy;
m_SvcContext = new ServiceContext(m_CrmService);
}

 

  • 写web service方法:

 

里面的实现可以参考 , 这里就不详谈。

接着就可以service 的dll 放到 Program Files\Microsoft Dynamics CRM\CRMWeb\bin 目录下,asmx文件放到 ISV 目录下 即可。

 

转载地址:http://gksox.baihongyu.com/

你可能感兴趣的文章
TCP-IP 学习(三) TCP
查看>>
对比两个无序整形数组相似度问题算法
查看>>
批量有效地修改package名
查看>>
android或ios app请求参数格式
查看>>
Camera Vision - video surveillance on C#
查看>>
如何理解网络连接中的"3次握手"?
查看>>
使用Dubbo服务出现java.io.IOException: invalid constant type: 18异常解决办法
查看>>
PYKit目录
查看>>
JSON使用总结
查看>>
php-redis中文帮助手册_系统相关_config_eval_evalSha_script...
查看>>
Tomcat Context配置
查看>>
CentOS6.5安装ntopng
查看>>
mysql事务rollback&commit
查看>>
Node.js搭建Web服务器
查看>>
实现Instagram的Material Design概念设计
查看>>
php5.3安装oracle的扩展oci8与pdo_oci
查看>>
发送超长短信的协议格式
查看>>
CentOS 6.x 快速安装L2TP ***
查看>>
mysql主主复制(双主复制)配置步骤
查看>>
一篇文章能够看懂基础源代码之JAVA篇
查看>>