【问题标题】:how to implement row level validation in jqgrid如何在 jqgrid 中实现行级验证
【发布时间】:2011-07-25 09:42:44
【问题描述】:

在保存更改的行之前,需要调用自定义函数来验证保存的可能性。

如果此自定义函数返回 false,则应取消行保存并且行应保持编辑模式,以便 该错误可以更正并再次保存。

如何在行内和表单编辑模式下验证行? 我还没有找到任何行级验证功能。我应该将自定义验证功能添加到列以进行验证 行还是有更好的解决方案?

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    如果我理解你是正确的,你应该使用自定义验证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 仍然会打印错误消息。如何抑制此错误消息或至少打印错误消息中的列值?还是更好/如何将表单数据与行数据一起发送到服务器中的编辑/添加方法?
    • @Andrus:客户端验证正是为了在数据错误的情况下向用户显示消息,所以我不明白你为什么尝试使用[false,'']SaveHeader 应该不显示任何消息,但会返回,custom_func 应该将消息作为数组的第二个元素返回。
    • 谢谢。两个问题: 1. jqGrid 在消息本身的开头打印列值。这个值与行验证错误无关,所以我正在寻找一种丢弃它的方法。 2. jqGrid 错误信息出现在模态对话框中。 SaveHeader() 将无模式错误消息添加到屏幕中,我正在寻找此类消息的方法。
    • @Andrus:在表单编辑的情况下,您可以在beforeSubmit 中轻松实现您想要的内容,但在行内编辑的情况下您无法实现您的要求。内联编辑使用​​github.com/tonytomov/jqGrid/blob/v4.1.2/js/… 行将列的名称添加到消息中,并在github.com/tonytomov/jqGrid/blob/v4.1.2/js/… 中的语句之后直接显示消息。所以您必须更改 jqGrid 代码 来实现您的要求。我没有看到另一种简单的解决方法。
    • 谢谢。我标记了你的答案并投了赞成票。我可以忍受从内联编辑验证打印的假行值
    猜你喜欢
    • 2017-05-19
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多