2015-11-24 92 views
0

我有一個要求,使用「下一個錯誤」按鈕將重點放在劍道網格上的錯誤單元格。專注於劍道網格中第二頁的單元格

但是我在將重點放在細胞上面臨一個問題。如果錯誤單元位於劍道網格的第二頁。

我的代碼:

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

我不是那麼熟悉角庫,但是劍道網格會給你它的狀態。這是你可以找到頁面的地方... var state = {columns:grid.columns, page:dataSource.page(), pageSize:dataSource.pageSize(), sort:dataSource.sort(), filter:dataSource.filter(), group:dataSource.group()}我用一點jquery來抓它,但是你可以用angular來做同樣的事情。希望有所幫助。 – BillRuhl

回答

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)顯示相應的頁面。

希望有所幫助。