13

Dynamics CRM 2011 では、インシデント エンティティで、"ステータスの理由" オプションセット (別名 statuscode) が "ステータス" オプションセット (別名 statecode) に関連付けられています。

たとえば、このスクリーンショットを参照してください

CRM フィールド オプションのスクリーンショット

API を使用して Status Reason オプションセットを取得すると、次のようになります。

        RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest
        {
            EntityLogicalName = "incident",
            LogicalName = "statuscode",
            RetrieveAsIfPublished = true
        };
        RetrieveAttributeResponse attributeResponse = (RetrieveAttributeResponse)serv.Execute(attributeRequest);
        AttributeMetadata attrMetadata = (AttributeMetadata)attributeResponse.AttributeMetadata;
        StatusAttributeMetadata statusMetadata = (StatusAttributeMetadata)attrMetadata;
        var dict = new Dictionary<int?, string>();
        foreach (OptionMetadata optionMeta in statusMetadata.OptionSet.Options)
        {
            dict.Add(optionMeta.Value, optionMeta.Label.UserLocalizedLabel.Label);
        }

「ステータス理由」(ステータスコード)オプションのリスト全体を取得するという点で機能します。ただし、どの「ステータス理由」(statuscode) オプションがどの「ステータス」(statecode) オプションに関連しているかについての情報は得られません。

どうすればその情報を入手できますか?

4

3 に答える 3

14

foreach 内にこのコードを挿入してみてください。

 int stateOptionValue = (int)((StatusOptionMetadata)optionMeta).State;

StatusAttributeMetaData.OptionSet.Options階層を参照してください。StatusOptionMetadata の State プロパティを使用すると、 StatusOptionMetadataという型を返すことができます。これは、この statuscode が属する状態コードを返します。

于 2013-03-18T10:11:46.377 に答える