将 RowData 传递给 Jqgrid 中的 Custom_func

Posted

技术标签:

【中文标题】将 RowData 传递给 Jqgrid 中的 Custom_func【英文标题】:Pass RowData to Custom_func in Jqgrid 【发布时间】:2016-08-01 12:25:17 【问题描述】:

我有一个带有某些列的 jqgrid。我正在尝试调用 custom_function 来验证单元格值。

我还从数据库中获取了一个正则表达式到 rowData,我想用它来验证单元格值。

var ret = jQuery("#settingsListGrid").jqGrid('getRowData', id);
cm.editrules = 
    required: true, 
    custom: true, 
    custom_func: ValidateData, 
    custom_value:ret.RegX 
;

所以我需要将 rowData 传递给自定义函数。

ValidateData = function (value, colname, customValue) 
    return customValue.test(value) ?
        [true] :
        [false, "Invalid Data"];

我想使用 customValue 传递 rowData

请帮忙?

【问题讨论】:

【参考方案1】:

答案取决于您使用的 jqGrid 的分支。我理解您写的问题,但是必须更改 jqGrid 的代码(自定义验证的实现)才能实现需求。

在 Tony Tomov 更改 jqGrid 的许可协议后,我开发了 jqGrid 的免费 jqGrid 分支,将他的 4.7.1 版产品重命名为 Guriddo jqGrid JS(参见the post)并使其商业化(参见价格here) .在基于上一个免费的 4.7 版本开始开发后,我对代码进行了很多更改和改进,并实现了许多新功能。您需要的功能从版本 4.12.1 开始实现(请参阅here)。因此,您可以在更新到当前免费的 jqGrid 4.13.2 后轻松解决您的问题。

新功能的工作原理如下:

editrules: 
    required: true, 
    custom: ValidateData, 
    custom_value: ret.RegX 

重要的是应该将自定义验证函数指定为custom 属性的值,而不是使用custom_func。它允许免费的 jqGrid 保持与旧版本的兼容性(通过 custom: truecustom_func),但通过函数提供验证回调的新参数作为 custom 属性的值。

新样式ValidateData会是这样的

var ValidateData = function (options) 
    return customValue.test(options.newValue) ?
        [true] :
        [false, "Invalid Data"];

只有一个 options 参数,它有很多你可以使用的属性。这种风格允许提供许多有用的信息,而不需要有很多不需要的参数。此外,回调选项的样式允许在将来的版本中扩展 options 对象,而不会破坏与以前版本的兼容性。

options 参数具有以下属性

newValue - 需要验证的当前(修改)值 oldValue - 单元格修改前之前的值(旧值) cmName - 列名。如果您在许多列中使用一个回调函数并且您想为不同的列实现一些不同的行为,这可能是实用的。如果出现验证错误,它还有助于生成可读的错误消息。 iCol - 当前colModel 中对应列的索引(cmName 列) cm - colModel 的元素,表示当前正在验证的列。 rowid - 当前编辑行的rowid。例如,可以使用getLocalRow 在编辑之前 获取其他列的内容。重要的是要注意getLocalRow 仅在使用datatype: "local"loadonce: true 的情况下有效。 getRowDatagetCell 方法可以安全地用于在表单编辑模式下获取数据或访问当前未编辑的数据(在单元格或内联编辑模式下)。 iRow - 当前编辑行从网格顶部开始的数字索引(从 html <table> 顶部开始) oldRowData - 仅在使用内联编辑或单元格编辑的情况下才会设置。它没有在表单编辑模式中定义。它代表值 mode - 显示现在使用的编辑模式。它可以是"addForm""editForm"(在使用表单编辑的情况下)、"cell"(单元格编辑)、"add""edit"(内联编辑)。在其他一些回调函数中,该属性可能有两个其他值:"filter"(过滤器工具栏中的字段)或"search"(用于验证搜索对话框的字段) trtd - 将使用表单编辑模式编辑的网格行和单元格的 DOM 元素。只有在表单编辑时才会设置属性。

我希望options 参数的大量属性可以让您轻松实现对任何自定义验证的要求。

【讨论】:

以上是关于将 RowData 传递给 Jqgrid 中的 Custom_func的主要内容,如果未能解决你的问题,请参考以下文章

jqGrid 将行的字变成超连接

jqGrid 将行变成超连接时浏览器解析超连接错误

JQgrid获取选中行的某个字段值

如何访问发送给jqgrid的额外参数?

通过 c 中的管道而不是文件将数据数组传递给 gnuplot

为啥不允许将数组按值传递给 C 和 C++ 中的函数?