我已经构建了一个dojo OnDemandGrid,其中有几列包含编辑器(NumberTextBox和FilteringSelect),因此我可以修改网格中的值。我还在这些列上添加了一些验证,以帮助确保输入的值是正确的。这些都看起来运行良好,当我输入一个无效值时,我会得到一个值不正确的指示。
我的问题是当我尝试将此数据发送回服务器时。当我通过www.example.com获取网格数据时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");
});
1条答案
按热度按时间w8f9ii691#
根据我找到的结果,您必须查看每个要验证的单元格,并检查.element.widget.isValid()以查看该小部件是否通过验证。我编写了一个函数来验证带有参数的网格:grid -要验证的网格cols -要验证的列名的字符串数组
我这样调用这个函数
这可能不是验证网格的最佳方法,但它似乎正在起作用。