jqgrid выбирает строки по умолчанию на основе значения столбца - PullRequest
0 голосов
/ 15 августа 2011

В качестве дополнения к моему предыдущему вопросу я бы хотел автоматически выбирать строки по умолчанию.В этом ответе они используют 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);
        }

    }
     ...
  });
}

1 Ответ

2 голосов
/ 15 августа 2011

похоже, что gridComplete будет делать то, что я хочу:

gridComplete: function(){   
    var grid_ids=grid.jqGrid('getDataIDs');
    for(var i=0; i<grid_ids.length; i++){
        var rowid = grid_ids[i];
        var aRow = grid.jqGrid('getRowData',rowid);
        var book_id = aRow['book_id'];
        if($.inArray(book_id,values)!=-1){
            grid.jqGrid('setSelection',rowid,true);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...