2011-10-21 34 views
3

我想改變功能區按鈕點擊statecode和中的StatusCode CRM 2011 我有javascript函數調用SOAP:CRM 2011 - 變化statecode +的StatusCode由JavaScript

if (typeof (Smpl) == "undefined") { Smpl = {}; } 

Smpl.Items = { 
change: function() { 

    var entityId = Xrm.Page.data.entity.getId().substr(1, 36); 
    var entityName = Xrm.Page.data.entity.getEntityName(); 
    var entityState = 0; 
    var entityStatus = 100007891; 

    var xml = "<?xml version='1.0' encoding='utf-8'?>" + 
    "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" + 
    "<soap:Body><Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'><Request xsi:type='SetStateDynamicEntityRequest'>" + 
    "<Entity><Id xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + entityId + "</Id>" + 
    "<Name xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + entityName + "</Name></Entity>" + 
    "<State>" + entityState + "</State>" + 
    "<Status>" + entityStatus + "</Status>" + 
    "</Request></Execute></soap:Body></soap:Envelope>"; 

    var xHReq = new ActiveXObject("Msxml2.XMLHTTP"); 
    xHReq.Open("POST", "http://my.full.com:80/web/mscrmservices/2007/CrmService.asmx", false); 
    xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute"); 
    xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); 
    xHReq.setRequestHeader("Content-Length", xml.length); 
    xHReq.send(xml); 

    var resultXml = xHReq.responseXML; 
    var errorCount = resultXml.selectNodes('//error').length; 
    if (errorCount != 0) { 
     var msg = resultXml.selectSingleNode('//description').nodeTypedValue; 
     alert(msg); 
    } 
    window.location.reload(); 
    } 
} 

我想說的全部代碼好吧,但當然,它根本不工作:/ 在谷歌上我只找到了一些片段,但沒有什麼不同於我的代碼。 真的沒有人真的沒有通過JavaScript從功能區更改狀態?

謝謝

回答

0

我在網上衝浪的,因爲我的一個朋友有同樣的問題,我沒有在2011年CRM通過JScript的改變去statecode,但我想我有你的解決方案。

在我的朋友的情況下,他的狀態碼值格式錯誤,他使用0或1,並且服務返回一個錯誤告訴他,0或1不是狀態碼的正確值,那麼我雖然編碼在C#中,你必須從Enumeration('Active'或'Inactive')中置入狀態值,他將其整數值更改爲「Active」,並且soap調用運行良好。

報告,如果你到達它真正的解決方案:)

見你。