0
作为我的previous question的扩展,我想默认自动选择行。在this response中,他们使用loadComplete在服务器请求后选择行。但是,我从服务器请求一次,然后使用本地数据。我需要在每次组织列时重新选择行,搜索网格......基本上每次数据视图都会发生变化。jqgrid默认根据列值选择行
我选择基于列(book_id)而不是显式rowid的行,那么回答here是合适的吗?或者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);
}
}
...
});
}
像你这样的所有行的枚举(关于'getDataIDs')在很多行的情况下工作会很慢。看看[另一个](http://stackoverflow.com/questions/5664587/jqgrid-load-large-data-set-without-pagination/5690583#5690583)。这里显示了更有效的枚举方法。你应该改变'ui-state-disabled'类的设置来调用你需要的'setSelection''。 – Oleg
感谢您抽出时间来解决潜在的问题。非常感激! – Andrea
不客气! – Oleg