0

CRM4.0でImportMapオブジェクトを作成しようとしています。Picklistの値であるTargetEntityプロパティを設定する必要があります。 リンクテキストは、を使用して実行できることを意味しているようです

importmap map = new importmap();
map.name = "test map";
map.targetentity = new Picklist();
map.targetentity.name = "Contact"

しかし、これは常にターゲットエンティティのプロパティをnullのままにするようです。

何かご意見は?

4

2 に答える 2

1

選択リストの場合は、インデックス値を指定する必要があります。値が1のTargetValues.Contactという列挙型があるとすると、次のようになります。

map.targetentity = new Picklist();
//map.targetentity.name = "Contact"
map.targetentity.Value = Convert.ToInt32(TargetEntities.Contact);

- 編集 -

私はあなたが達成しようとしていることのためにあなたはどういうわけかターゲットエンティティを取得しなければならないと信じています、そしてそれからあなたはそれらを列挙することができるでしょう。

これを参照してください、おそらくこれは役立つでしょう。

上記が役に立たない場合は、次の方法でそれを行うことができます。

  1. UIから開いた選択リストに、インデックスの数とそれに対応する値を書き留めます。
  2. コードで列挙型を作成し、それらの値/インデックスをそれに割り当てます。
  3. 実行時にenumを使用して(上記の例で指定)、選択リストを設定します。

しかし、どういうわけかインデックスは一定期間にわたって変化する可能性があるため、その場合は、それらの値/インデックスを使用して列挙されたxmlを作成し、実行時にロードできます。しかし、このアプローチの問題は次のとおりです。

  1. 誰かがインデックスを変更しようとするたびに、これは非常にまれですが、管理者はxmlファイルも変更する必要があります。
  2. 外部xmlファイルのロードはオーバーヘッドです。

あまり良いアプローチではありませんが、締め切りに間に合わない場合、これがあなたにできることです。これが壊れたり、問題を引き起こしたりすることは決してありません。そのxml読み込み部分は良くありません。

ところで、CRM SDKを実行すると、同様の種類の例が見つかります。

于 2009-11-20T11:57:50.423 に答える
0

この関数を動的リクエスト選択リスト値に使用します。

public IDictionary<int,string> PickListValues(string entityname, string attributename)
{
    var req = new RetrieveAttributeRequest();
    req.EntityLogicalName = entityname;
    req.LogicalName = attributename;
    req.RetrieveAsIfPublished = true;

    var response = (RetrieveAttributeResponse)Service.MetaDataService.Execute(req);

    var picklist = (PicklistAttributeMetadata)response.AttributeMetadata;

    var res = new Dictionary<int,string>();

    foreach (var item in picklist.Options)
       res.Add(item.Value.Value, item.Label.UserLocLabel.Label);

    return res;
}
于 2011-10-09T15:54:44.260 に答える