我创建了一个 JavaScript OnSave 事件,该事件通过“机会”实体表单中的“销售配额分布”实体网格进行解析,并检查“销售配额分布”网格的“资源”字段中的重复项。当有重复时,将出现警告消息。这是可行的,但我希望能够附加 OnSave 事件,以在没有重复资源的情况下不允许用户保存表单。我怎样才能做到这一点?
以下是我当前的代码:
function GetTotalResourceCount(executionContext) {
console.log("function started");
var execContext = executionContext;
var formContext = executionContext.getFormContext();
var resourceyescount = 0;
try {
var gridCtx = formContext._gridControl;
var grid = gridCtx.getGrid();
var allRows = grid.getRows();
//get rows - use the getControl method and pass the grid name.
//var gridContext = formContext.getControl("s_qd");
// if (formContext.getGrid().getTotalRecordCount() == 0) {
// setTimeout(function () { GetTotalResourceCount(execContext); }, 2000);
// return;
// }
var duplicatesFound = 0;
//loop through rows and get the attribute collection
allRows.forEach(function (row, rowIndex) {
var thisRow = row.getData().entity;
var thisRowId = thisRow.getId();
var thisResource = "";
var thisResourceName = "";
var thisResourceID = "";
console.log("this row id=" + thisRowId);
var thisAttributeColl = row.getData().entity.attributes;
thisAttributeColl.forEach(function (thisAttribute, attrIndex) {
var msg = "";
if (thisAttribute.getName() == "new_resource") {
thisResource = thisAttribute.getValue();
thisResourceID = thisResource[0].id;
thisResourceName = thisResource[0].name;
}
});
// Loop through every row and find one with
// thatresource == thisResource &&
// thatrow ID != thisRowId
var allRows2 = formContext.getGrid().getRows();
//loop through rows and get the attribute collection
allRows2.forEach(function (row, rowIndex) {
var thatRow = row.getData().entity;
var thatRowId = thatRow.getId();
var thatAttributeColl = row.getData().entity.attributes;
var thatResource = "";
var thatResourceName = "";
var thatResourceID = "";
thatAttributeColl.forEach(function (thatAttribute, attrIndex) {
if (thatAttribute.getName() == "new_resource") {
thatResource = thatAttribute.getValue();
thatResourceID = thatResource[0].id;
thatResourceName = thatResource[0].name;
if (thatResourceID == thisResourceID && thatRowId != thisRowId) {
duplicatesFound++;
var msg = "Duplicate resource " + thatResource;
}
}
});
});
});
if (duplicatesFound > 0) {
console.log("duplicate found");
Xrm.Utility.alertDialog("WARNING: There are duplicate resources in the Sales Quota Distribution grid.");
}
} catch (err) {
console.log('Error occurred :' + err)
}
}