Я создал додзе OnDemandGrid, у которого есть несколько столбцов с редакторами (NumberTextBox и FilteringSelect), поэтому я могу изменять значения в сетке. Я также добавил некоторые проверки в этих столбцах, чтобы убедиться, что введенные значения верны. Кажется, что все работает нормально, и когда я ввожу недопустимое значение, я получаю указание, что это значение неверно.Как проверить поле редактора в dojo OnDemainGrid
Моя проблема в том, когда я пытаюсь отправить эти данные на сервер. Когда я получаю данные сетки с ui.searchResultGrid.collection.data, любое из недопустимых полей не было обновлено в коллекции и все еще имеет свои исходные значения. Я предполагаю, что когда ячейка обновляется и сохраняет ее, она выполняет свою проверку, и если эта проверка не выполняется, она не обновляет коллекцию. Как я могу сказать, что некоторые ячейки не прошли проверку и имеют проблемы?
Вот как я определяю свою сетку, если это поможет:
require(["dojo/_base/declare", "dgrid/OnDemandGrid", "dgrid/Keyboard", "dgrid/Selection", "dgrid/Editor",
"dgrid/extensions/ColumnResizer", "dgrid/extensions/DijitRegistry", "dijit/form/NumberTextBox",
"dijit/form/FilteringSelect", "dojo/_base/lang", "dojo/domReady!"],
function (declare, OnDemandGrid, Keyboard, Selection, Editor, ColumnResizer, DijitRegistry, NumberTextBox, FilteringSelect, lang) {
var CustomGrid = declare([OnDemandGrid, Keyboard, Selection, Editor, ColumnResizer, DijitRegistry]);
ui.searchResultGrid = new CustomGrid({
columns: {
newItemAmount: {
label: "# of New Item",
editor: NumberTextBox,
editorArgs: {
constraints: {
min: 0.0001,
max: 999.9999,
allowNegative: false,
places: 4
},
style: "width:90px;",
required: true
},
autoSave: true,
resizable: false,
sortable: false,
width: 100
},
newItemUnitId: {
label: "Unit of New Item",
editor: FilteringSelect,
editorArgs: {
style: "width:130px",
searchAttr: "name",
labelAttr: "name",
required: true
},
autoSave: true,
resizable: false,
sortable: false,
width: 140
}
},
selectionMode: "none",
cellNavigation: false,
}, "searchResultGrid");
});
Это не работает, если имеется достаточно строк, чтобы некоторые из них не отображались во время проверки, так как это «OnDemandGrid». 'grid.cell (rowId, cols [c]). Элемент' будет не определен для строк без рендеринга. – mbomb007