webix:验证服务器上数据表的编辑

webix: Validating edits from datatable on the server

我有以下场景:

一个数据表,其中包含一些可编辑的列,可使用 webix 规则验证客户端上的输入。虽然有些列不能在客户端上验证,但只能在服务器上验证(即唯一 id/code)。

一种方法是创建一个规则并在同步模式下使用 webix.ajax 进行验证,我希望完全避免这种情况。

我想我可以在 'save' 上验证。服务器可以 return 状态响应错误或成功。我可以用数据表的 onAfterUpdate 事件捕捉到这个(如果有更好的方法请纠正我,但它是这样工作的)。 此时,如果服务器脚本 return 处于错误状态并将行(可能还有相应的 column/cell)标记为错误,我想在数据表上显示验证错误。 我以为我可以在数据表上使用 callEvent 方法并触发 onValidationError 事件,但我没能成功。

save: {
  url: "save.php",
  autoupdate: true,
  on:{
    onAfterUpdate:function(response, id, details) {
      if (response.status == 'error')
        myDataTable.callEvent('onValidationError');
    }
  }
}

文档指出我可以将一些参数从 callEvent 传递给事件,但我在文档中找不到任何规范。上面的代码不起作用(事件未触发)。

所以问题是:如何使用 callEvent 为数据表触发 onValidationError 事件?

或者使用 webix 显示数据表错误并在服务器端进行验证的另一种方法是什么?

谢谢。

您可以使用

而不是调用 onValidationError 事件
//mark cell, call after error response
myDataTable.addCellCss(id, columnId, "webix_invalid");
//remove mark, call after success response
myDataTable.removeRowCss(id, "webix_invalid");

这会将单元格标记为无效。

附带说明一下,如果你想用参数触发一些事件,你可以使用如下代码。请注意,触发事件并不是更改组件状态的好方法(尽管它可用于触发您自己的事件处理程序)

myDataTable.callEvent("event name", [param1, param2, param3])