zoukankan      html  css  js  c++  java
  • Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能

    前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现的。

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

     

    1. List界面添加按钮

    • 要注意不是form界面:

    image

     

    • 添加按钮:

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

    image

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

     

    image

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

     

    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方法:

     

    image

    里面的实现可以参考 Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 这里就不详谈。

    接着就可以service 的dll 放到 Program FilesMicrosoft Dynamics CRMCRMWebin 目录下,asmx文件放到 ISV 目录下 即可。

     

    Dynamic CRM 2013学习笔记 系列汇总 -- 持续更新中

  • 相关阅读:
    nyoj 69 数的长度
    hdu 1437 天气情况【概率DP】
    hdu 2058 The sum problem
    hdu 1491 Octorber 21st
    Aras学习笔记(16)- Aras官方项目Tree Grid View Sample原理介绍
    Aras学习笔记 (15)
    Aras学习笔记 (14) DotNet操作Aras常用代码代码汇总(陆续更新中)
    Aras学习笔记 (13) Javascript端常用代码代码汇总(陆续更新中)
    Aras学习笔记 (12) C#代码读取域用户列表(转,翻译)
    Aras学习笔记 (11) Aras集成AD账号
  • 原文地址:https://www.cnblogs.com/fengwenit/p/4206920.html
Copyright © 2011-2022 走看看