在 Jqgrid 中将 RowData 传递给 Custom_func

Pass RowData to Custom_func in Jqgrid

我有一个包含某些列的 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

请帮忙?

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

在 Tony Tomov 更改了 jqGrid 的许可协议后,我开发了 jqGrid 的免费 jqGrid 分支,将他的产品在版本 4.7.1 中重命名为 Guriddo jqGrid JS(参见 the post) and made it commercial (see the prices here). After starting the development based on the last free 4.7 version I made a lot of changes and improvements in the code and have implemented many new features. The feature which you need is implemented starting with version 4.12.1 (see 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 参数的大量属性能让您轻松实现对任何自定义验证的要求。