【发布时间】:2011-07-25 09:42:44
【问题描述】:
在保存更改的行之前,需要调用自定义函数来验证保存的可能性。
如果此自定义函数返回 false,则应取消行保存并且行应保持编辑模式,以便 该错误可以更正并再次保存。
如何在行内和表单编辑模式下验证行? 我还没有找到任何行级验证功能。我应该将自定义验证功能添加到列以进行验证 行还是有更好的解决方案?
【问题讨论】:
标签: jqgrid
在保存更改的行之前,需要调用自定义函数来验证保存的可能性。
如果此自定义函数返回 false,则应取消行保存并且行应保持编辑模式,以便 该错误可以更正并再次保存。
如何在行内和表单编辑模式下验证行? 我还没有找到任何行级验证功能。我应该将自定义验证功能添加到列以进行验证 行还是有更好的解决方案?
【问题讨论】:
标签: jqgrid
如果我理解你是正确的,你应该使用自定义验证editrules
editrules: {
custom:true,
custom_func: function(value,colname) {
// return [true,""] in case of successful validation
// [false,"Your error message"]; in case of validation error
}
}
代码示例见jqGrid documentation。
jqGrid 只有单元格级别 验证,但取决于您如何使用内联编辑(例如,只有一行处于编辑模式一次),您可以从整个编辑行中获取数据。你有很多选择。例如,您可以手动获取行数据,或者只为所有感兴趣的列定义验证规则,在第一列的验证中,您只需将value 保存在外部对象的属性中在最后一个验证函数中,您可以访问所有保存的数据以进行真正的行验证。
【讨论】:
editrules = {custom = true, custom_func = function (value, colname) { if (!SaveHeader()) return [false,'']; else return [true,'']; }}。出错时 SaveHeader 打印错误消息并返回 false。但是,即使 custom_func 返回 [false,''] ,jqGrid 仍然会打印错误消息。如何抑制此错误消息或至少打印错误消息中的列值?还是更好/如何将表单数据与行数据一起发送到服务器中的编辑/添加方法?
[false,'']。 SaveHeader 应该不显示任何消息,但会返回,custom_func 应该将消息作为数组的第二个元素返回。
beforeSubmit 中轻松实现您想要的内容,但在行内编辑的情况下您无法实现您的要求。内联编辑使用github.com/tonytomov/jqGrid/blob/v4.1.2/js/… 行将列的名称添加到消息中,并在github.com/tonytomov/jqGrid/blob/v4.1.2/js/… 中的语句之后直接显示消息。所以您必须更改 jqGrid 代码 来实现您的要求。我没有看到另一种简单的解决方法。