2017-12-07 5 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によると、これはデータを破壊する可能性があるため、コードでは可能ではないようです。

千さん

1001夫人

1002氏

1003博士

あなたが礼拝のこのオプションを設定しているとしましょうレコードにオプション設定値を保存する場合、CRMは整数値。連絡先のSalutation列には、1000,1001などの値が入ります。 Mrs.の値を1001から2002に変更すると、1001のレコードには1001のレコードが残ります。その連絡先をロードすると、それはもはや存在しない1001を見つけることを試み、あなたはエラーを得るでしょう。

オプションセット値のマスターリストは、整数値とそのラベル(言語に依存)と一致するStringMapというテーブルに格納されます。 CRMはオプションセットの列を取得するたびに、stringmapテーブルの整数値を検索し、アクティブな言語のラベルを返します。

このため、オプションセットに新しい値を作成し、古い値を持つすべてのレコードを新しい値に設定してから、古い値をオプションセットから削除します。

あなたは本当にここで何をしようとしていますか?

関連する問題