jqgrid custom_func 验证现有行

Posted

技术标签:

【中文标题】jqgrid custom_func 验证现有行【英文标题】:jqgrid custom_func validate existing row 【发布时间】:2017-05-19 12:40:59 【问题描述】:

我不知道我的编码有什么问题?

colModel: [
                
                    key: true, hidden: true, name: 'Id', index: 'Id', editable: true
                , 
                    name: 'ProjectCode',
                    index: 'ProjectCode',
                    sorttype: "text",
                    edittype: "text",
                    editable: true,
                    editrules: 
                        required: true,
                        custom: true,
                        custom_func: function (value, colName) 
                            return validateDuplicateData(value, colName);
                        
                    
                

这里是 validateDuplicateData 函数:

 function validateDuplicateData(value, colName) 
        var allRowsInGrid = $('#jqgrid').jqGrid('getRowData');
        $.each(allRowsInGrid, function (k, v) 
            if (v.ProjectCode == value) 
                return [false, "Project code has been used. Please try using another code."];
            
        );
    

为什么结果总是显示在下面:

MessageBox : "自定义函数应该返回数组!"

请指教... 谢谢。。

【问题讨论】:

您应该将 current 行中的值排除在测试之外。您能否提供有关您所做工作的更多详细信息?您使用哪种编辑模式和datatype?您使用哪个版本的 jqGrid 以及来自 jqGrid 的哪个分支(free jqGrid、商业Guriddo jqGrid JS 或版本 custom 指定为free jqGrid 中的回调函数,而不是使用custom_func。您将获得 rowid 作为参数,这可以很容易地从测试中排除可编辑的行。 the commit的评论详细描述了custom回调的选项。有关详细信息,请参阅the issue。 【参考方案1】:

函数从不返回 true 与数组。如果循环后没有发现重复数据,它应该在函数结束时返回 true。

【讨论】:

以上是关于jqgrid custom_func 验证现有行的主要内容,如果未能解决你的问题,请参考以下文章

一次显示验证消息(验证摘要)而不是逐个jqgrid?

jqgrid 选中行触发编辑,切换下一行时验证和异步保存上一行数据

向现有 JQGRID 添加新列

jqgrid 不能选中行, 每次点击单元格都自动选中第一行

使用 JQuery 插件进行 JQgrid 验证

获取jqgrid有多条行数据