jqGrid动态选择选项 - beforeEditCell未触发

时间:2010-04-05 16:50:58

标签: jquery select jqgrid drop-down-menu

我正在使用一个下拉列创建一个jqgrid。我需要下拉列的选项来动态更改,所以我认为我可以捕获beforeCellEdit事件。

然而,它似乎没有被解雇。关于我做错了什么的任何想法?没有错误,我确实检查了我是否包含了jqgrid编辑js文件。

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
        }

});

2 个答案:

答案 0 :(得分:2)

我相信beforeEditCell没有触发的原因是你的父网格中没有“cellEdit:true”。

即:

    ...
    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

答案 1 :(得分:0)

您可以考虑在调用beforeEditCell时指定格式化程序功能,而不是使用editRow

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

然后,此功能可用于设置下拉列表:

function formatEditors(id) {
    // Initialize dropdown for the row, using jQuery selector:
    // jQuery("#" + id + "_actions", "#projectList")
}