I am trying to find a way to scroll to a specific row while using virtual scrolling but my solution has not been consistent. Here is the function that is being called each time I want to select a specific row:
function selectGridRow(grid_element,grid_value,grid_field) {
var dataSource = grid_element.dataSource,
filters = dataSource.filter() || {},
sort = dataSource.sort() || {},
models = dataSource.data();
var query = new kendo.data.Query(models),
rowNum = 0,
modelToSelect = null;
models = query.filter(filters).sort(sort).data;
// Item Position
for (var i = 0; i < models.length; ++i) {
var model = models[i];
if (model[grid_field] == grid_value) {
modelToSelect = model;
rowNum = i;
break;
}
}
grid_element._selectedIds = {};
// Change to the page where the row is and select it
var currentPageSize = grid_element.dataSource.pageSize(),
pageWithRow = parseInt((rowNum / currentPageSize)) + 1;
grid_element.dataSource.page(pageWithRow);
var row = grid_element.element.find("tr[data-uid='" + modelToSelect.uid + "']");
if (row.length > 0) {
grid_element.select(row);
grid_element.content.scrollTop(grid_element.select().position().top);
}
}
Is there anything I am missing here?