简体   繁体   English

当在Dynamics 365中使用JavaScript单击“完成”按钮时,如何将约会标记为“完成”

[英]How to mark an appointment as “completed” when the “finished” button is clicked using JavaScript in dynamics 365

My code below does not work, it changes to completed and quickly changes back. 我下面的代码不起作用,它更改为已完成,然后迅速改回。 ..................................................................................................................................................... .................................................. .................................................. .................................................

function OnLoad() {

    Xrm.Page.data.process.addOnProcessStatusChange(statusOnChange);
}

function statusOnChange() {

    status = Xrm.Page.data.process.getStatus();

    if (status == "finished") {

        markAsComplete();

    }
}


function markAsComplete(){



    if (Xrm.Page.getAttribute("statecode") != null && Xrm.Page.getAttribute("statuscode") != null){

        Xrm.Page.getAttribute("statecode").setValue(1); //Changing Status to Completed
        Xrm.Page.getAttribute("statecode").setSubmitMode("always");


        Xrm.Page.getAttribute("statuscode").setValue(3); //Changing Status Reason to Completed
        Xrm.Page.getAttribute("statuscode").setSubmitMode("always");

    }else{

        alert("statecode field is not available on the form");
    }


}

To change the state of a record from JavaScript, you should either call a workflow or send a PATCH request to the Web API . 要从JavaScript更改记录的状态,您应该调用工作流或向Web API发送PATCH请求。

An update via the Web API would look as follows: 通过Web API进行的更新如下所示:

var appointmentId = Xrm.Page.data.entity.getId();

var entity = {};
entity.statuscode = 3;
entity.statecode = 1;

var req = new XMLHttpRequest();
req.open("PATCH", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/appointments(" + appointmentId + ")", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function () {
    if (this.readyState === 4) {
        req.onreadystatechange = null;
        if (this.status === 204) {
            //Success - No Return Data - Do Something
        }
        else {
            Xrm.Utility.alertDialog(this.statusText);
        }
    }
};
req.send(JSON.stringify(entity));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何通过 javascript 单击 Dynamics 365 功能区按钮 - How to click Dynamics 365 Ribbon Button via javascript 如何使用 javaScript 在 Dynamics 365 中克隆自定义实体 - How to Clone an custom entity in dynamics 365 using javaScript Dynamics 365 CE - 如何在 Javascript 中使用 WebApi 取消案例? - Dynamics 365 CE - How to cancel a case using WebApi in Javascript? 使用javascript单击“编辑”按钮时,如何使行可编辑? - How make the row editable when edit button is clicked using javascript? 如何在使用JavaScript单击按钮时更改文件名并下载 - How to change a file name and download it when a button is clicked using JavaScript 当使用Java单击按钮时如何触发HTML助手 - How to fire HTML helper when the button is clicked using Javascript 单击按钮时显示进度 Dynamics CRM 365 - show progress when click button Dynamics CRM 365 如何在Dynamics 365中使用HTML / JavaScript从用户接受输入日期? - How to accept an input date from the user using HTML/JavaScript in Dynamics 365? 如何使用 Dynamics 365 的保存和路由按钮? - How can I work with save and route button Dynamics 365? 如何知道在Javascript中点击某个特定按钮的时间? - How to know when a particular button is clicked in Javascript?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM