Kendo网格验证不适用于自定义网格行为

Kendo grid validation not working with custom grid behavior

本文关键字:网格 自定义 不适用 验证 Kendo 适用于      更新时间:2023-09-26

我无法在自定义网格中进行验证。网格用于更改编辑单元格下方单元格的值。两个单元格都有新值后,单元格焦点将设置为下一个单元格(如果按下enter/tab键,则为右侧单元格,或者鼠标单击下一个的单元格)。为了使所有这些工作正常进行,我必须编写自定义refresh()current()函数,并在网格中使用自定义edit()save()事件。我还在单元格中使用自定义编辑器,它删除微调器并选择单元格的值。

我做了一个简化的工作示例,表明验证不起作用。在本例中,您可以编辑第一行中的单元格,当您按enter键或tab键时,下面的单元格将获得与编辑后的单元格相同的值。自定义功能和事件是鼠标和键盘对焦所必需的,所以我必须使用它们。

如果删除单元格的值,然后按enter键,则不会显示验证错误。我想这与我使用的所有自定义函数和事件有关。有没有一种方法可以使验证生效?

示例

我开始工作了,问题出在自定义列编辑器函数中。Telerik的伙计们为我提供了解决方案:

由于缺少验证属性,因此未触发验证。正如您所知,当使用自定义列编辑器时,开发人员负责将适当的验证属性添加到该编辑器中的正确元素中。

function editNumberWithoutSpinners(container, options) {
    // add name attribute to connect the validation placeholder with the validated element
    $('<input name="' + options.field + '" data-text-field="' + options.field + '" ' +
        'data-value-field="' + options.field + '" ' +
        'data-bind="value:' + options.field + '" ' +
        'data-format="' + options.format + '" required="required"/>') // add the validation attributes
        .appendTo(container)
        .kendoNumericTextBox({
            spinners: false,
            min: 0
        });
    // custom validation message placeholder is required due to the way NumericTextBox is rendered
    $('<span class="k-invalid-msg" data-for="' + options.field + '"></span>').appendTo(container);
}