如果confirm()命令返回false,我正在尝试使用CRM 2015中内置的setValue()函数将字段更改回null。触发confirm()的字段也是我尝试设置为null的字段。
代码如下:
if (optionSetField.getValue() == 805430000 /*YES*/) {
var tempBoolean = confirm("Test", "test Title")
if (tempBoolean == false) {
optionSetField.setValue(null)
}
我尝试设置为null的字段是一个选项设置字段,其中“是”和“否”作为可用选项。我发现这更适合在一个字段上使用,因为它意味着我不需要默认值。
在代码触发并且用户单击“取消”时,setValue(null)会触发onChange事件,尽管该字段应该设置为null,但要求再次确认。有什么我做错了或这是一个潜在的错误?对于我正在做的事情,还有其他建议吗?
根据Microsoft技术文档,setValue()不应该触发onChange事件,但显然情况并非如此。任何人的见解都会有所帮助!
请参阅此处了解文档:https://msdn.microsoft.com/en-us/library/gg334409.aspx#BKMK_setValue
答案 0 :(得分:0)
您应该使用confirmDialog
,因为它是基于回调的,它应该允许字段正确更新。
Xrm.Utility.confirmDialog(message, yesCallback, noCallback)
所以喜欢这个
if (optionSetField.getValue() === 805430000) {
Xrm.Utility.confirmDialog("Test", function(){
optionSetField.setValue(null);
});
}
这也适用于平板电脑(另一方面,确认不会)
答案 1 :(得分:0)
我有CRM 2015 U1 Turbo表单触发onchange事件,当它不应该根据setValue文档。 CRM 2016 Update 1似乎已经为我解决了这个问题,尽管我无法在Microsoft的支持文档中的任何位置找到错误修复。
这是主动连接案例:https://connect.microsoft.com/dynamicssuggestions/feedback/details/2527691