Don't保存表单
Don't save the Form
我在约会表单中有一个自定义javascript。功能区上有一个按钮。按钮应该更改状态代码,然后保存表单。但当我尝试保存时,如果有一个字段发生了更改,表单就不会保存自己。下面是我的代码;
Xrm.Page.data.entity.save();
var newStatus = 3;
var json = new JSonObject();
var data = json.SetState(Xrm.Page.data.entity.getId(), Xrm.Page.data.entity.getEntityName(), 1, newStatus);
if (data != true)
alert("Error!");
else {
Xrm.Page.data.entity.save('saveandclose');
//window.parent.location.reload();
}
我什么都试过了。首先保存,然后设置状态,然后再次保存等。如果代码是这样的,则会导致一个错误,即"无法更新Closed或Cancelled Activity"。如果它先保存,然后重新加载,然后设置状态,然后保存,然后再重新加载,则更改的字段不会得到最后一个值。它获取从保存按钮手动保存的上一个值。
function changeRecordStatus(RECORD_ID,stateCode,statusCode) {
// create the SetState request
var request = "<s:Envelope xmlns:s='"http://schemas.xmlsoap.org/soap/envelope/'">";
request += "<s:Body>";
request += "<Execute xmlns='"http://schemas.microsoft.com/xrm/2011/Contracts/Services'" xmlns:i='"http://www.w3.org/2001/XMLSchema-instance'">";
request += "<request i:type='"b:SetStateRequest'" xmlns:a='"http://schemas.microsoft.com/xrm/2011/Contracts'" xmlns:b='"http://schemas.microsoft.com/crm/2011/Contracts'">";
request += "<a:Parameters xmlns:c='"http://schemas.datacontract.org/2004/07/System.Collections.Generic'">";
request += "<a:KeyValuePairOfstringanyType>";
request += "<c:key>EntityMoniker</c:key>";
request += "<c:value i:type='"a:EntityReference'">";
request += "<a:Id>" + RECORD_ID + "</a:Id>";
request += "<a:LogicalName>cmic_systemusersalesterritoryassociation</a:LogicalName>";
request += "<a:Name i:nil='"true'" />";
request += "</c:value>";
request += "</a:KeyValuePairOfstringanyType>";
request += "<a:KeyValuePairOfstringanyType>";
request += "<c:key>State</c:key>";
request += "<c:value i:type='"a:OptionSetValue'">";
request += "<a:Value>"+stateCode+"</a:Value>";
request += "</c:value>";
request += "</a:KeyValuePairOfstringanyType>";
request += "<a:KeyValuePairOfstringanyType>";
request += "<c:key>Status</c:key>";
request += "<c:value i:type='"a:OptionSetValue'">";
request += "<a:Value>"+statusCode+"</a:Value>";
request += "</c:value>";
request += "</a:KeyValuePairOfstringanyType>";
request += "</a:Parameters>";
request += "<a:RequestId i:nil='"true'" />";
request += "<a:RequestName>SetState</a:RequestName>";
request += "</request>";
request += "</Execute>";
request += "</s:Body>";
request += "</s:Envelope>";
//send set state request
$.ajax({
type: "POST",
contentType: "text/xml; charset=utf-8",
datatype: "xml",
url: Xrm.Page.context.getServerUrl() + "/XRMServices/2011/Organization.svc/web",
data: request,
beforeSend: function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader("Accept", "application/xml, text/xml, */*");
XMLHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
},
success: function (data, textStatus, XmlHttpRequest) {
Xrm.Page.ui.close();
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
}
我使用了上面提到的函数来异步更改RecordStatus创建一个如下所示的函数名AppointmentOnSave()
,并在其中调用上述函数:
function AppointmentOnSave(){
var AppointmentGuid = Xrm.Page.data.entity.getId();
var StateCode = 1;
var StatusCode= 3;
Xrm.Page.data.entity.save( "saveandclose");
changeRecordStatus(AppointmentGuid,StateCode,StatusCode); //Mark Completed
}
此处为实体状态代码
这是第二种方法,也是一种简单的方法:试试这个:
首先需要添加这三个javascript文件作为CRM 中的网络资源
jquery1.4.1.min.js
json2.js
SDK.JQuery.js
这些文件在SDK的Script文件夹下(SDK''samplecode''js''restendpoint''jqueryrestdataoperations''jqueryrestdataoperations''scripts)
然后:
function AppointmentOnSave(){
var AppointmentGuid = Xrm.Page.data.entity.getId();
var StateCode = 1;
var StatusCode= 3;
var Appoinment= {};
Appoinment.StateCode=1;
Appoinment.StatusCode=3;
setTimeout(function(){
SDK.JQuery.updateRecord(
AppointmentGuid ,
Appoinment,
"task",
function success (msg) {
alert(msg);
},
function failed (error) {
alert(error);
}
);
}, 500);at
Xrm.Page.data.entity.save( "saveandclose");
}
相关文章:
- 如何停止javascript的执行并允许用户保存表单
- javascript html使用webstorage保存表单
- 在浏览器会话中保存表单数据
- 空闲时自动保存表单
- 是否可以在没有用户提交表单的情况下保存表单数据
- 如何在单击“另存为草稿”按钮时使用 JavaScript 保存表单内容
- PHP 页面未保存表单和解析输出
- 使用 jquery 记住保存表单时打开的选项卡
- 使用ajax调用自动保存表单数据
- 如何在浏览器中保存表单输入
- 保存表单输入数据以在其他页面上使用
- Don't保存表单
- 如何在模态窗口中保存表单值
- 仅在提交时使用 javascript 保存表单状态
- 我如何保存表单数据与jquery和php sql
- 单击按钮保存表单中的数据
- 如何使用 HTML5 本地存储保存表单中的数据
- 如果用户没有保存表单,如何测试用户是否对表单进行了任何更改
- 如何保存表单中的信息?
- 通过ajax保存表单数据,不需要服务器代码