我在使用 Razor 的 ASP.NET MVC 中有一个 jqGrid 函数,如下所示
$(function () {
$("#grid").jqGrid({
url: "/Common/GetCategoryList",
editurl: '/Common/CategoryEdit',
datatype: 'json',
mtype: 'Get',
colNames: ['Id', 'Name', 'Created On', 'Status'],
colModel: [
{ key: true, name: 'id', editable: false, formatter: 'integer', viewable: false, hidden: true },
{
key: false,
name: 'name',
editable: true,
editrules: { custom: true, custom_func: checkforduplicates, required:true }
},
然后我有一个自定义函数来检查上面网格中的重复名称
function checkforduplicates(value, colname) {
var grid = $("#grid");
var textsLength = grid.jqGrid("getGridParam", "data"),myName = $.map(textsLength, function (item) { return item.name });
alert("textsLength is " + textsLength);
alert(JSON.stringify(myName));
var textsLength2 = JSON.stringify(textsLength);
alert("textsLength 2 is " + textsLength2);
var myAttrib = $.map(textsLength,
function (item) { return item.name });
alert("myAttrib is " + myAttrib);
var count = 0;
for (var k in textsLength) {
if (textsLength.hasOwnProperty(k)) {
++count;
}
}
var text, i;
alert("value of count is " + count);
for (i = 0; i < count; i++) {
text = myAttrib[i];
if (value === text) {
return [false, " - Duplicate category name."];
}
}
return [true, ""];
}
以上所有警报都返回空值。因此,即使有超过 20 行,该函数也不会从网格获取值,并且我输入了重复值并单击“提交”。
编辑:- 当我使用 grid.jqGrid("getGridParam", "data") 时,数据类型为“local”而不是“json”,数组返回值
最佳答案
引用JQGrid Doc 。我能理解
grid.jqGrid("getGridParam", "data")
将始终返回空数组。尝试按如下方式更改代码
grid.jqGrid("getGridParam", "colModel")
希望这对你有帮助
关于jqgrid - 将值传递给 jqGrid 自定义函数以验证重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37808232/