2015-10-15 2 views
8

Я нашел сообщения с похожими заголовками, но я все еще не могу решить свою проблему. Определенно, я делаю что-то неправильно.Выбрать программно Сетка сетки Кендо

В конфигурации сетки кэндо имеют некоторую функцию, принимать контекст (сетки) и прочитать выбранную строку:

change: function (e) { 
      refresh(this); 
     } 

Это, как я настроил «изменить» событие.

В функции «Обновление (сетка)» Я получаю выбранную строку на следующим образом:

refresh: function (grid) {   
    var selectedRows = grid.select(); 
    var selectedRow = grid.dataItem(selectedRows[0]); 
    var id = selectedRow.Id; 
} 

Этот подход отлично работает при выборе сетки строки вручную. Но когда я выбираю строку, программно переменная «selectedRow» имеет значение NULL.

Я выбор на программно следующим образом:

var grid = $("#grid").data("kendoGrid"); 
var rows = grid.dataSource.data(); 
var row = rows[rows.length - 1]; 
grid.select(row); 

Как я печален выше, в предыдущем «Refresh (сетка)» Метод переменной selectedRow будет нулевым.

У кого-нибудь есть мнение об этом? Почему это случилось?

Благодаря

ответ

12

В соответствии с документацией Сетки метод "select" принимает «строка» параметр (селектор) или JQuery элемент. Поэтому, если вам нужно правильно выбрать строку, вы должны изменить текущий код следующим образом:

var grid = $("#grid").data("kendoGrid"); 

//if you are using the "pageable" option of the grid 
//you should get the visible rows using the .view() method 
var models = grid.dataSource.data(); 

var model = rows[rows.length - 1]; 
var lastRowUid = model.uid; 

//find the target row element: 
var row = grid.table.find("[data-uid=" + lastRowUid + "]"); 

grid.select(row); 
+0

Спасибо, только изменение должно было изменить строки [rows.length - 1]; к моделям [rows.length - 1]; – s1cart3r

Смежные вопросы