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

时间:2016-06-14 09:35:12

标签: jqgrid

我在使用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”时,数组返回值

2 个答案:

答案 0 :(得分:2)

来自JQGrid Doc的参考。我能理解

  

grid.jqGrid(&#34; getGridParam&#34;,&#34;数据&#34;)

将始终返回一个空数组。尝试按如下所示更改代码

  

grid.jqGrid(&#34; getGridParam&#34;,&#34; colModel&#34;)

我希望这会对你有所帮助

答案 1 :(得分:0)

我刚刚更改为var textsLength = grid.jqGrid("getRowData"); FROM var textsLength = grid.jgGrid("getGridParam", "data");我认为现在已经解决了。 -