1

如何使用 CRM JavaScript SDK 从字段中检索名称而不是值?
可以使用 SDK 检索该值:

SDK.REST.retrieveRecord(...);
    account.completePopulateAccountFields = function (account) {
    var type = account["optionsetname"].Value;
    if (type != null)
        //perform action

此调用仅返回值。
OrganizationData.svc 中是否有可以使用检索到的值查询的选项集集?

4

3 回答 3

2

您需要使用元数据服务来检索标签名称。检查代码:

C#:

RetrieveAttributeRequest request = new RetrieveAttributeRequest {
   EntityLogicalName = entityName,
   LogicalName = attributeName,
   RetrieveAsIfPublished = true
};

RetrieveAttributeResponse response = (RetrieveAttributeResponse)service.Execute(request);

PicklistAttributeMetadata metadata = (PicklistAttributeMetadata)response.AttributeMetadata;

OptionMetadata[] optionList = metadata.OptionSet.Options.ToArray();

foreach (OptionMetadata option in optionList) {
    //option.Value - Value of option
    //option.Label.UserLocalizedLabel.Label - Label name of that value
}

如果您想知道一个标签文本,您只知道该值并且您不在表单中,请在Javascript中使用它。

如果您处于想要获取选项集文本的表单中,您可以简单地执行以下操作:

Xrm.Page.getAttribute("optionsetfieldname").getText();
于 2013-02-27T10:24:09.537 回答
1

我将相同的命名选项集添加到 Contact 并将其设为只读,并使用从父帐户获得的值填充它。
要求是在联系人上显示父帐户类型
我仍然不知道如何使用 JavaScript 获取选项集值的名称。

于 2013-02-28T07:30:14.313 回答
0

最近在 CRM 中发生了一些变化(?),因为直接调用 Xrm.Page.getAttribute("optionsetfieldname").getText() 会给你一个错误。使用两步方法:

var sOptionsetAttribute = Xrm.Page.getAttribute("optionsetfieldname");
var sOptionsetValueName = sOptionsetAttribute.getText();
于 2015-02-11T11:12:28.537 回答