Я не совсем использовал ответ js1568, так как хотел заблокировать неверные значения , поскольку они вводятся ;даже до того, как сработает событие AfterEdit, и строка будет помечена как грязная, и задолго до записи в базу данных.Но эта ссылка вдохновила меня на использование модели выбора сетки.Итак, мое быстрое небольшое решение:
Поскольку NumberField не передает никакого контекста пользовательскому валидатору (кроме текущего значения), использование field.originalValue
было бы здорово, но эй, жизнь трудна.
Но из-за того, что редактирование строки сначала требует выбора этой строки (и подкреплено тем фактом, что RowSelectionModel этой сетки установлен на SingleSelect
), я знаю, что редактируемая строка должна быть единственнойэлемент в grid.selModel.selections.items[]
.Оттуда, это просто вопрос
var newTotal = TotalCommissionPercentagesInGrid() – oldValue + newValue;
с oldValue
, являющимся grid.selModel.selections.items[0].data.CommissionPercentage
, и newValue
, являющимся значением, переданным в функцию проверки из NumberField.
return ( newTotal <= percentageAvailable ) ? true : "No dice.";
Очень мило.