目前我在使用批量编辑功能时遇到问题。我正在努力实现以下目标。我也给出了下面的代码。
- 在批量编辑表单上,从 2 个选项集中选择值。
- 在 value2 的 change 事件上,它调用一个 javascript 函数。
在函数中,我使用 window.dialogArguments 将选择进行批量编辑的所有记录提取到一个变量中。现在在 for 循环中,我一个接一个地获取记录,然后为每条记录执行以下操作:对于每条记录,使用已选择的选项集值和来自当前记录数据的更多值,它检查条件并决定要设置的最终值集。湾。它尝试为批量编辑表单上可用的某些字段(比如说 5 )设置这些最终值,用于使用 OData 更新的特定记录。
它正在执行循环,获取记录,将其分配给实体对象,执行 OData 调用并更新在步骤 1 中选择的值(即选项集值),这对于所有记录都是相同的。对于这 5 个字段,它应该根据从步骤 b 检索到的条件和最终值集来设置值。
取而代之的是,它为所有记录设置了 5 个字段值,这些值等同于从步骤 b 检索到的值,用于最后一条记录。
我怀疑的是,最后在关闭批量编辑表单之前,它会为所有具有相同值的记录覆盖这 5 个字段值(我理解,这是批量编辑的默认功能)。
如何防止最后一次覆盖数据值并保持之前使用 OData 更新的值?
我现在有点坚持这一点。非常感谢任何帮助。下面是示例代码:
if (Xrm.Page.ui.getFormType() == 6) {
var records = window.dialogArguments;
for(i=0; i<records.length;i++){
// oDataEndpointUrl Fetch
var requestResultsOpp= fetchData(...);
var optionset1 = Xrm.Page.getAttribute("optionset1").getValue();
var optionset2 = Xrm.Page.getAttribute("optionset2").getValue();
if (requestResultsOpp != null) {
var case_value = requestResultsOpp.field;
var entityObject = new Object();
/* Check values from optionset and perform some condition checks */
if (some condition ) {
switch (case_value) {
case 3 /* XYZ */:
case 4 /* ABCD */:
case 5 /* PQR */:
if (optionset1 == 1 && optionset2 == 11)
Set the 5 fields values
if (optionset1 == 1 && optionset2 == 12 )
Set the 5 fields values
break;
default:
if (optionset1 == 2 && optionset2 == 12 )
Set the 5 fields values
break;
}
}
entityObject.optionset1 = {Value: optionset1};
entityObject.optionset2 = {Value: optionset2};
entityObject.Field1 = {Value: field1};
entityObject.Field2 = {Value: field2};
entityObject.Field3 = {Value: field3};
entityObject.Field4 = {Value: field4};
entityObject.Field5 = {Value: field5};
// oDataEndpointUrl update
updateRecordSync("entityName", record[i] , entityObject);
}
}
}