我正在使用一个下拉列创建一个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
}
});
答案 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")
}