【问题标题】:Kendo grid validation not working with custom grid behavior剑道网格验证不适用于自定义网格行为
【发布时间】:2014-06-01 11:24:34
【问题描述】:
我无法在我的自定义网格中进行验证。网格旨在更改已编辑单元格下方单元格的值。在两个单元格都有新值后,单元格焦点设置到下一个单元格(如果按下 enter/tab 或接下来单击鼠标单击的单元格,则单元格在右侧)。为了让所有这些工作,我必须编写自定义 refresh() 和 current() 函数并在网格中使用自定义 edit() 和 save() 事件。我还在单元格中使用自定义编辑器,它会删除微调器并选择单元格的值。
我制作了一个简化的工作示例,表明验证不起作用。在示例中,您可以编辑第一行中的单元格,当您按 Enter 或 Tab 时,下面的单元格将获得与编辑后的单元格相同的值。自定义函数和事件对于鼠标和键盘焦点都起作用是必需的,所以我必须使用它们。
如果您删除单元格的值,然后按 Enter,则不会显示验证错误。我想这与我使用的所有自定义函数和事件有关。有没有办法使验证工作?
EXAMPLE
【问题讨论】:
标签:
javascript
jquery
validation
kendo-ui
kendo-grid
【解决方案1】:
我让它工作了,问题出在自定义列编辑器功能中。 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);
}