将值传递给jqGrid自定义函数以验证重复行

将值传递给jqGrid自定义函数以验证重复行,jqgrid,Jqgrid,在使用Razor的ASP.NETMVC中,我有一个jqGrid函数,如下所示 $(function () { $("#grid").jqGrid({ url: "/Common/GetCategoryList", editurl: '/Common/CategoryEdit', datatype: 'json', mtype: 'Get', colNames: ['Id', 'Name', 'Created

在使用Razor的ASP.NETMVC中,我有一个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, ""];
}
函数检查重复(值,colname){
风险值网格=$(“#网格”);
var textsLength=grid.jqGrid(“getGridParam”,“data”),myName=$.map(textsLength,函数(项){return item.name});
警报(“文本长度为”+文本长度);
警报(JSON.stringify(myName));
var textsLength2=JSON.stringify(textsLength);
警报(“文本长度2为”+文本长度2);
var myAttrib=$.map(textsLength,
函数(项){return item.name});
警报(“myAttrib为”+myAttrib);
var计数=0;
for(文本长度中的变量k){
if(textsLength.hasOwnProperty(k)){
++计数;
}
}
var文本,i;
警报(“计数值为”+计数);
对于(i=0;i
以上所有警报都返回空值。因此,即使有20多行,函数也不会从网格中获取值,我输入了一个重复的值,然后单击submit

编辑:- 当我使用grid.jqGrid(“getGridParam”,“data”)时,其中的数据类型是“local”而不是“json”,数组从中返回值。我能理解

jqGrid(“getGridParam”,“data”)

将始终返回空数组。请尝试按以下方式更改代码

jqGrid(“getGridParam”、“colModel”)


我希望这将对您有所帮助

我刚刚更改为
var textsLength=grid.jqGrid(“getRowData”)
FROM
var textsLength=grid.jgGrid(“getGridParam”,“data”)我想现在可以了

@JayarajK当我使用grid.jqGrid(“getGridParam”,“data”)时,其中数据类型是“local”而不是“json”,数组返回值。@JayarajK我用colModel替换了数据。但结果是一样的,我只是添加了var textsLength=grid.jqGrid(“getRowData”);而不是var textsLength=grid.jgGrid(“getGridParam”、“data”)。我想现在可以了。