Параметр динамического выбора jqGrid - перед EditCell не срабатывает

Я создаю jqgrid с одним выпадающим столбцом. Мне нужно, чтобы параметры раскрывающихся столбцов изменялись динамически, поэтому я подумал, что смогу поймать событие beforeCellEdit.

однако, похоже, он не стреляет. Любая идея о том, что я делаю неправильно? ошибки нет, и я проверил, что включил js-файлы редактирования jqgrid.

var lastsel2;
jQuery(document).ready(function(){ 
    jQuery("#projectList").jqGrid({
        datatype: 'json',
        url:'projectDrv.jsp',
        mtype: 'GET',
        height: 250,
        colNames:['Node','Proposal #', 'Status', 'Vendor', 'Actions'],
        colModel :[ 
          {name:'node', index:'node', width:100, editable:false, sortable:false},
          {name:'proposal', index:'proposal', width:100, editable:false, resizable:true }, 
          {name:'status', index:'status', width:100, resizable:true, sortable:false, editable:false  },
          {name:'vendor', index:'vendor', width:100, resizable:true, editable:false, sortable: false },
          {name:'actions', index:'actions', width:100, resizable:true, sortable:false, editable: true, edittype:"select" }
        ],
        pager: '#pager',
        rowNum: 10,
        sortname: 'proposal',
        sortorder: 'desc',
        viewrecords: true,
        onSelectRow: function(id){ 
          if (id && id!==lastsel2){ 
            jQuery('#projectList').jqGrid('restoreRow',lastsel2); 
            jQuery('#projectList').jqGrid('editRow',id,true); 
            lastsel2 = id; 
          } 
        }, 
        beforeEditCell: function(rowid, cellname, value, irow, icol) { 
          alert("before edit here " + rowid);
          // set editoptions here
        }

});


person Community    schedule 05.04.2010    source источник
comment
См. этот ответ: [параметр динамического выбора jqGrid][1] [1]: stackoverflow.com/questions/1291290/   -  person Jose R    schedule 25.02.2012


Ответы (2)


Я считаю, что причина, по которой EditCell не срабатывает, заключается в том, что у вас нет «cellEdit: true» в вашей родительской сетке.

ie:

    ...
    viewrecords: true,
    cellEdit: true,
    onSelectRow: function(id){ 
      if (id && id!==lastsel2){ 
        jQuery('#projectList').jqGrid('restoreRow',lastsel2); 
        jQuery('#projectList').jqGrid('editRow',id,true); 
        lastsel2 = id; 
      } 
    }, 
    beforeEditCell: function(rowid, cellname, value, irow, icol) { 
      alert("before edit here " + rowid);
      // set editoptions here
    }

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing#properties

person Jeff Hiltz    schedule 16.08.2010

Вместо использования beforeEditCell вы можете рассмотреть возможность указания функции форматирования в вашем вызове editRow:

jQuery('#projectList').jqGrid('editRow',id,true,formatEditors); 

Затем эту функцию можно использовать для настройки раскрывающегося списка:

function formatEditors(id) {
    // Initialize dropdown for the row, using jQuery selector:
    // jQuery("#" + id + "_actions", "#projectList")
}
person Justin Ethier    schedule 05.04.2010
comment
в formatEditors у меня есть этот код: предупреждение (тест); jQuery(#projectList).setColProp('actions', {edittype: select, editoptions:{value:True:False} } ); и он не вызывается, если в моей исходной colmodel есть столбец действий с типом редактирования: выберите. если я не установлю тип редактирования, эта функция будет вызвана, но выпадет пустой список. (выпадающее содержимое в конечном итоге будет динамическим). - person ; 06.04.2010