我有一个带有空选项的CRM 2013表单,我需要使用Javascript在表单加载时动态添加选项。
在表单的onLoad方法中,我正在进行jQuery ajax调用以获取要添加到选项集的项目列表,然后我循环遍历结果并调用addOption方法控制添加项目。
新选项显示在选项集中很好,但是当我运行表单并选择其中一个动态选项时,选择不会立即粘贴"和所选选项变为NULL。它甚至不会触发选项集控件的onChange事件。
任何人都可以帮我吗?我觉得必须有可能,因为我已经看过几十篇关于动态添加选项的博客帖子,而且我完全关注,但它不起作用。
function form_Load()
{
if (!formLoaded) {
try {
$.ajax({
url: TECHNOLOGIES_URL,
dataType: 'jsonp',
success: function (response) {
$('#results').html(JSON.stringify(response, null, ' '));
var children = response.children;
var arrayLength = children.length;
// update the optionset
var xrmPage = Xrm.Page;
var pickListField = xrmPage.getControl("et_parenttechnology");
for (var i = 0; i < arrayLength; i++) {
//add items to parent technology option set
var option = { value : children[i].id , text : children[i].name };
pickListField.addOption(option);
}
}
});
}
catch (ex) { debugLog("test: " + ex.message); }
}
formLoaded = true;
}
答案 0 :(得分:0)
使用JS添加值是不可能的。 您必须先添加它们,隐藏它们然后只显示您想要的那些。 最后,您必须将“添加”操作替换为“显示”操作。
答案 1 :(得分:0)
您可以在技术上使用SDK添加和删除选项集值。您可以获取此示例中的代码(http://msdn.microsoft.com/en-us/library/gg509023.aspx)并在SDK中的SOAPLogger项目中运行它以获取SOAP请求,而SOAP请求又可以通过JavaScript执行。
但是,这会改变字段的系统元数据,并且不建议您通过客户端执行此操作。通过在创建所有可能值的答案中使用该方法然后隐藏它们,您可以将数据保存在其他记录中。如果您要实际删除与给定选项关联的元数据,它将从系统中的所有记录中删除该值。