我需要使用“下一个错误”按钮将焦点放在kendo-Grid上的错误单元格中。
但我正面临着将重点放在细胞上的问题。如果错误单元格位于kendo网格的第二页。
我的代码:
function nextErr(){
var grid = angular.element('#myGrid').data('kendoGrid');
var dataItems = grid.dataSource.data();
var index;
var uid;
for(var i=0; i < dataItems.length; i++){
if(!isNullOrUndefined(dataItems[i].errors)
&& !angular.element.isEmptyObject(dataItems[i].errors)){
index = i;
uid = dataItems[i].uid;
break;
}
}
var errorCell = angular.element("tr[data-uid='"+ uid +"'] td[data-err-msg != 'undefined']")[0];
grid.editCell(errorCell);
}
如果有人实施了类似的内容,请告诉我们
答案 0 :(得分:0)
对于类似的问题,我使用了来自Kendo UI Grid select by data item的想法。这是我自己稍微修改过的函数,用于在网格中查找dataItem。
function findDataItem(dataSource, dataItem) {
if (!dataItem) {
return null;
}
var view = kendo.data.Query.process(dataSource.data(), {
filter: dataSource.filter(),
sort: dataSource.sort()
}).data;
var index = -1;
// find the index of the matching dataItem
var ID = 'YOUR_ID_FIELD_NAME';
for (var x = 0; x < view.length; x++) {
if (view[x][ID] == dataItem[ID]) {
index = x;
break;
}
}
if (index === -1) {
return null;
}
var page = Math.floor(index / dataSource.pageSize());
var targetIndex = index - (page * dataSource.pageSize());
return {
page: ++page,
index: targetIndex,
}
}
然后,您可以使用返回的page
在网格dataSource.page(page)
中显示相应的网页。
希望有所帮助。