【问题标题】:Passing values to jqGrid custom function for validation of duplicate rows将值传递给 jqGrid 自定义函数以验证重复行
【发布时间】:2016-06-14 09:35:11
【问题描述】:

我在使用 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 行,该函数也没有从网格中获取值,我输入了一个重复的值并单击提交。

编辑:- 当我使用数据类型为“local”而不是“json”的 grid.jqGrid("getGridParam", "data") 时,数组返回值

【问题讨论】:

  • 我刚刚添加了 var textsLength = grid.jqGrid("getRowData");而不是 var textsLength = grid.jgGrid("getGridParam", "data")。我认为现在可以解决了。

标签: jqgrid


【解决方案1】:

来自JQGrid Doc 的引用。我可以理解

grid.jqGrid("getGridParam", "data")

总是会返回一个空数组。尝试如下更改代码

grid.jqGrid("getGridParam", "colModel")

希望对你有帮助

【讨论】:

  • @JayarajK 当我使用数据类型为“local”而不是“json”的 grid.jqGrid("getGridParam", "data") 时,数组返回值。
  • @JayarajK 我用 colModel 替换了数据。但结果相同。
【解决方案2】:

我刚刚从var textsLength = grid.jgGrid("getGridParam", "data"); 更改为var textsLength = grid.jqGrid("getRowData");,我认为现在可以了。 -

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多