JavaScript/Dynamics CRM:需要帮助完成 JavaScript 事件,计算网格 "Id & Qualify" 字段中的记录数 ="Yes"

JavaScript/Dynamics CRM: Need help finishing JavaScript event that counts how many records in a grid's "Id & Qualify" field ="Yes"

在我的商机表单中,我添加了一个 "Sales Quota Distribution" 实体可编辑网格。一个Opportunity 可以有多个Sales Quota Distribution 记录。我正在处理一个 JavaScript 事件,该事件计算销售配额分布网格中显示的记录的 "ID & Qualify" 字段中有多少记录 = "Yes"。 "ID & Qualify" 是一个下拉字段,它包含的两个选项是 Yes 和 No。我相信我快完成了,但是代码由于某种原因返回 "null"。任何帮助让它工作的帮助将不胜感激。谢谢!

这是我的代码,无论网格中 "Id & Qualify" 字段中显示了多少 "Yes",它当前都返回 null:

function YesCount(executionContext) {
    var formContext = executionContext.getFormContext();
    var allRows = null;
    var attributeColl = null;
    var idqualifyyescount;
    var gridContext = formContext.getControl("s_qd");
    allRows = gridContext.getGrid().getRows();
    allRows.forEach(function (row, rowIndex) {
        attributeColl = row.getData().getEntity().attributes;
        switch (att.getName()) {
            case "new_idqualify":
                if (att.getText() = "Yes") {
                    idqualifyyescount = idqualifyyescount + 1;
                }
        }
    });
    if ((idqualifyyescount) > 4) {
        Xrm.Page.ui.setFormNotification("WARNING: There are more than 4 Yes's in Sales Quota Distribution grid.", "WARNING");
    }
}

而不是

if (att.getText() = "Yes") {  

试试这个

if (att.getText() == "Yes") {

单等 = 用于赋值,而双等 == 用于比较。

您必须初始化 idqualityyescount 以将其声明为整数:

var idqualifyyescount = 0;

你什么时候设置att?试试这个。

function YesCount(executionContext) {
var formContext = executionContext.getFormContext();
var allRows = null;
var attributeColl = null;
var idqualifyyescount;
var gridContext = formContext.getControl("s_qd");
allRows = gridContext.getGrid().getRows();
allRows.forEach(function (row, rowIndex) {
    attributeColl = row.getData().getEntity().attributes;
    attributeColl.forEach(function(att) {
        switch (att.getName()) {
            case "new_idqualify":
                if (att.getText() == "Yes") {
                    idqualifyyescount = idqualifyyescount + 1;
                }
        }
    });
});
if ((idqualifyyescount) > 4) {
    Xrm.Page.ui.setFormNotification("WARNING: There are more than 4 Yes's in Sales Quota Distribution grid.", "WARNING");
}

或者更好。

function YesCount(executionContext) {
    var formContext = executionContext.getFormContext();
    var idqualifyyescount = 0;
    var gridCtx = formContext.getControl("s_qd");

    gridCtx.getGrid().getRows().forEach((row) => {
        let att = row.getData().entity.getAttributes().getByName("new_idqualify");
        if(att.getText() == "Yes")
            idqualifyyescount++;
    });

    if(idqualifyyescount > 4){
        Xrm.Page.ui.setFormNotification("WARNING: There are more than 4 Yes's in Sales Quota Distribution grid.", "WARNING");
    }
}