2010-04-05 8 views
1

Je crée un jqgrid avec une colonne déroulante. J'ai besoin des options des colonnes déroulantes pour changer dynamiquement, donc j'ai pensé pouvoir attraper l'événement beforeCellEdit.jqGrid dynamic select option - beforeEditCell ne se déclenche pas

Cependant, cela ne semble pas être le cas. une idée sur ce que je fais mal? il n'y a pas d'erreur, et j'ai vérifié que j'ai inclus les fichiers js d'édition 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 
     } 

});

+0

Voir cette réponse: [jqGrid sélectionnez l'option dynamique] [1] [1]: http: // stackoverflow. com/questions/1291290/jqgrid-dynamique-select-option –

Répondre

0

Au lieu d'utiliser beforeEditCell vous pourriez envisager de spécifier une fonction de formatter dans votre appel à editRow:

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

Ensuite, cette fonction peut être utilisée pour configurer votre menu déroulant:

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

en formatEditeurs j'ai ce code: alerte ("test"); jQuery ("# Projectlist") setColProp ( \t \t 'Actions', { \t \t EditType: "select", \t \t editoptions: {valeur: "Vrai: Faux"} \t \t} \t). et il n'est pas appelé si mon colmodel original a les "actions" coloumn avec edittype: "select". Si je ne mets pas le edittype, cette fonction est appelée mais affiche une liste vide. (le contenu déroulant sera éventuellement dynamique). –

2

Je crois que le La raison pour laquelle beforeEditCell ne se déclenche pas est que vous n'avez pas "cellEdit: true" dans votre grille parent.

-à-dire:

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

Questions connexes