前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击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);
}
});
}