JavaScript / Dynamics CRM: нужна помощь в завершении события JavaScript, которое подсчитывает, сколько записей в поле "Id & Qualify" сетки = "Да" - PullRequest
0 голосов
/ 12 ноября 2019

В форме «Возможность» я добавил редактируемую сетку сущности «Распределение квот для продаж». Одна возможность может иметь много записей распределения квот продаж. Я работаю над событием JavaScript, которое подсчитывает, сколько записей = "Да" в поле "ID & Qualify" для записей, показанных в сетке распределения квоты продаж. «ID & Qualify» - это раскрывающееся поле, и в нем есть два варианта: «Да» и «Нет». Я думаю, что я близок к завершению, но по какой-то причине код возвращает «ноль». Любая помощь в получении этого будет принята с благодарностью. Спасибо!

Вот мой код, который в настоящее время возвращает ноль, независимо от того, сколько «Да» отображается в поле «Id & Qualify» в сетке:

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");
    }
}

Ответы [ 3 ]

2 голосов
/ 12 ноября 2019

Вместо

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

попробуйте это

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

Единичное равное = предназначено для назначения, тогда как вы хотите двойное равное ==, которое для сравнения.

1 голос
/ 13 ноября 2019

Когда вы устанавливаете 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");
    }
}
0 голосов
/ 13 ноября 2019

Вы должны инициализировать idqualityyescount, чтобы объявить его целым числом:

var idqualifyyescount = 0;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...