В качестве дополнения к моему предыдущему вопросу я бы хотел автоматически выбирать строки по умолчанию.В этом ответе они используют loadComplete для выбора строк после запроса к серверу.Тем не менее, я запрашиваю с сервера один раз и использую локальные данные с тех пор.Вместо этого мне нужно повторно выбирать строки каждый раз, когда столбцы организованы, сетка ищется ... в основном каждый раз, когда меняется представление данных.
Я выбираю строки на основе столбца (book_id), а не явного rowid, поэтому будет ли уместным ответ здесь ?Или у jqGrid есть явный метод (например, onUpdateGrid
), чтобы помочь в достижении этой цели?Теперь он ищет, что мне нужно будет просто скопировать код под onPaging
и onSortCol
.
Метод dataInit для столбца fav_books:
initBookEdit: function(elem){
//populate reference table
populateBookRefs($(elem).val());
//display dialog which contains reference table
//pressing OK button on dialog saves all id's as a
//comma delimited list in the main table
$('#bookRefPopup').dialog({
buttons: {
"OK": function(){
var selectedRows = bookRefTable.jqGrid('getGridParam', 'selarrrow');
var selectedIds = new Array();
for(var i=0; i<selectedRows.length; i++){
var changedRow = bookRefTable.getRowData(selectedRows[i]);
var book_id = changedRow['book_id'];
selectedIds.push(book_id);
}
var editedRow = $('#mainTable').jqGrid('getGridParam', 'selrow');
$('#mainTable').jqGrid('setCell',editedRow, 'docs_ref', selectedIds, null, null, true);
$('#mainTable').trigger('reloadGrid');
$(this).dialog( "close" );
},
Cancel: function() {
$( this ).dialog( "close" );
}
}//close buttons
});//close dialog
}
И инициализациясправочная таблица:
function populateBookRefs(ids){
values = ids.split(',');
grid.jqGrid({
...
loadComplete: function(){ //event executed after server request
for(var i=0; i<values.length; i++){
grid.jqGrid('setSelection',values[i],true);
}
}
...
});
}