2017-12-07 13 views
1

코드 C#을 통해 옵션 집합의 옵션 값 (레이블 아님)을 수정할 수있는 솔루션이 있는지 알고 있습니까? (라벨 : OldLabel, 값 :에 OldValue) 예를 들어코드 C#로 옵션 집합의 값을 수정하는 방법?

, 나는이 옵션을

을하고 난이 원하는 : (레이블 : OldLabel, 값 : NewValue로)를

나는 다음에 의해 시도 코드는하지만, 작동하지 않는 :

UpdateOptionValueRequest updateOptionValueRequest = 
    new UpdateOptionValueRequest 
    { 
     OptionSetName = _globalOptionSetName, 
     // Update the second option value. 
     Value = newValue, 
     Label = new Label("oldLabel", _languageCode) 
    }; 

_serviceProxy.Execute(updateOptionValueRequest); 

//Publish the OptionSet 
PublishXmlRequest pxReq3 = new PublishXmlRequest { ParameterXml = String.Format("<importexportxml><optionsets><optionset>{0}</optionset></optionsets></importexportxml>", _globalOptionSetName) }; 
_serviceProxy.Execute(pxReq3); 

답변

2

UpdateOptionValueRequest가 키 (정수)를 사용하여 라벨 (텍스트 표시)를 업데이트 할 수있는 메시지입니다. Label을 사용하여 Integer 키를 업데이트하려고합니다.

이렇게하면 기존 데이터와 새 데이터에 대해 시스템에서 데이터 불일치가 발생합니다. 이와 같이 수동으로 업데이트하거나 & SDK를 사용하여 새 옵션을 다시 생성하더라도 데이터 손실은 불가피합니다.

MSDN의 코드 샘플을 보면 주석에 분명하게 나와 있습니다.

   #region How to update an option item in a picklist 
       // In order to change *labels* on option set values (or delete) option set 
       // values, you must use UpdateOptionValueRequest 
       // (or DeleteOptionValueRequest). 
       UpdateOptionValueRequest updateOptionValueRequest = 
        new UpdateOptionValueRequest 
        { 
         OptionSetName = _globalOptionSetName, 
         // Update the second option value. 
         Value = optionList[1].Value.Value, 
         Label = new Label("Updated Option 1", _languageCode) 
        }; 

       _serviceProxy.Execute(updateOptionValueRequest); 

       //Publish the OptionSet 
       PublishXmlRequest pxReq3 = new PublishXmlRequest { ParameterXml = String.Format("<importexportxml><optionsets><optionset>{0}</optionset></optionsets></importexportxml>", _globalOptionSetName) }; 
       _serviceProxy.Execute(pxReq3); 



       Console.WriteLine("Option Set option *label* changed."); 
       #endregion How to update an option item in a picklist 
1

@Arun Vinoth는 코드를 통해 가능한 것은 아니며 이유가있을 경우 데이터가 손상 될 수 있습니다.

1000 미스

1001 부인

1002 씨

1003 박사

:

의 당신이 인사의이 옵션이 설정되어 있다고 가정 해 봅시다 레코드에 옵션 설정 값을 저장할 때 CRM은 정수 값. 연락처의 인사말 열에는 1000, 1001 등과 같은 값이 있습니다. 부인의 값을 1001에서 2002로 변경하면 1001의 레코드에는 1001이 계속 남아 있습니다. 연락처를로드해야 할 때 , 더 이상 존재하지 않는 1001을 찾으려고 시도하면 오류가 발생합니다.

옵션 세트 값의 마스터 목록은 정수 값을 해당 레이블 (언어에 따라 다름)과 일치시키는 StringMap이라는 테이블에 저장됩니다. CRM은 옵션 집합 열을 검색 할 때마다 stringmap 테이블에서 정수 값을 조회하고 활성 언어의 레이블을 반환합니다.

모든 것이 있기 때문에 원하는 것을 수행하는 방법은 옵션 세트에 새 값을 만들고 이전 값을 가진 모든 레코드를 새 값으로 설정 한 다음 옵션 세트에서 이전 값을 삭제하는 것입니다 .

여기서 정말로 무엇을하려고합니까?