2016-08-16 5 views
0

ajax에서 odata 쿼리를 사용하여 entitydata를 검색 할 때 값 대신 Label of optionset을 입력하고 싶습니다.odata에서 getdata를받을 때 optionset 레이블을 찾는 방법은 무엇입니까?

var oDataUri = serverUrl + "/XRMServices/2011/OrganizationData.svc/ProductSet"; 

$.ajax({ 
    type: "GET", 
    contentType: "application/json; charset=utf-8", 
    datatype: "json", 
    url: oDataUri, 
    async: false, 
    beforeSend: function (XMLHttpRequest) { 
     XMLHttpRequest.setRequestHeader("Accept", "application/json"); 
    }, 
    success: function (msg, textStatus, XmlHttpRequest) { 
     debugger; 
     var data = msg.d; 
     StateCode = data.StateCode.Value; 
     ProductStructure = data.ProductStructure.Value;  
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     alert(); 
    } 
}); 

아무도 해결책을 제안 할 수 있습니까?

답변

0

OData 쿼리는 옵션 세트 레이블을 보유하는 속성 메타 데이터 (옵션 세트 값 만)를 반환하지 않습니다.

옵션 세트 메타 데이터를 얻고 옵션 세트 값과 일치하는 레이블을 얻으려면 추가 호출을해야합니다. SDK.Metadata.js을 사용하십시오.

+0

답을 sdk로 보내 주셔서 감사합니다. 나는 옵션 세트 레이블을 얻을 수 있습니다. –

0

아래의 sdk 정의를 사용하지 않고 한 가지 더 발견 할 수 있습니다.

serverUrl = location.protocol + "//" + location.host; 
var Query = "products"; 
var req = new XMLHttpRequest(); 
req.open("GET", serverUrl + "/api/data/v8.0/" + Query, false); 
req.setRequestHeader("Accept", "application/json"); 
req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
req.setRequestHeader("OData-MaxVersion", "4.0"); 
req.setRequestHeader("OData-Version", "4.0"); 
req.setRequestHeader("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue"); 
req.onreadystatechange = function() { 
    if (this.readyState == 4 /* complete */) { 
     req.onreadystatechange = null; 
     if (this.status == 200) { 
      data = JSON.parse(this.response); 
      if (data != null) { 

       alert(data.value[0]["[email protected]"]); //for optionset text 

      } 

     } 
     else { 
      var error = JSON.parse(this.response).error; 
      alert(error.message); 
     } 
    } 
}; 
req.send();