1

我很困惑用什么来进行 kendogrid 列验证和更改错误模板?

我想为不同的列显示不同的验证消息。还想更改默认错误消息的 UI。我只想以没有背景颜色的红色显示错误消息。

   dataBound: (e: any): void => {
        this.updateValidations(e);
      }

 private updateValidations(event: any): boolean {
    let kendoValidator = $('#grid').kendoValidator().data('kendoValidator');
    let validatorRules = {
      rules: {
        Col1Rule: (input) => {
          if (input.attr('name') === 'Col1') {
            return $.trim(input.val()) !== '';
          }
        },
        Col2Rule: (input) => {
          if (input.attr('name') === 'Col2Rule') {
            return $.trim(input.val()) !== '';
          }
        }
      },
      messages: {
        Col1Rule: this.col1Message,
        Col2Rule: this.col2Message,
      },
      errorTemplate: '<span>#=message#</span>'
    };
    kendoValidator.setOptions(validatorRules);
    return true;
  }

我试过这个,它不起作用。我仍然可以看到默认验证消息警报。

我也在下面尝试过,但它不起作用

   model: {
          fields: {
            col1: {
              type: 'string',
              editable: true,
              nullable: false,
              validation: {
                required: true
                message: this.col1Message
              }
            },
            col2: {
              type: 'string',
              editable: true,
              validation: {
                required: true
                message: this.col2Message
              }
            }
          }
          }

还尝试了另一件事

 let input = $('<input/>');
        input.attr('name', options.field);
input.attr('data-required-msg', this.col1Message);
        input.width(container.width());
        input.width(container.width());
        input.appendTo(container);

但这也行不通。

有人可以建议这样做的正确方法吗?

4

1 回答 1

0

要更改错误消息,您必须将消息设置为data-<name of rule>-msg规则内的属性:

    model: {
        fields: {
            col1: {
                type: 'string',
                editable: true,
                nullable: false,
                validation: {
                    Col1Rule: (input) => {
                        if (input.attr('name') === 'Col1') {
                            input.attr('data-col1rule-msg', 'your custom message');
                            return $.trim(input.val()) !== '';
                        }
                        return true;
                    },
                }
            },
        }
    }

如果你想要一个完整的其他用户界面,你可以在一个隐藏span的. 然后您可以在验证器中创建您自己的跨度并将其添加到您的表单中。class="k-invalid-msg"data-for="Col1"div

于 2019-12-13T09:57:22.037 回答