2011-10-11 16 views
5

Quando faccio clic su qualsiasi riga della mia griglia, tutte le colonne modificabili diventano modificabili.Come disabilitare la modifica di alcune celle nella modifica delle righe di JQGrid?

Desidero che alcune delle colonne siano modificabili su ogni riga separatamente.

    Column 1, Column 2,  Column 3    
ROW Number 1 - editable,  non-editable, non-editable 
ROW Number 2 - non-editable, editable,  non-editable  
ROW Number 3 - editable,  non-editable, non-editable 

Grazie in anticipo

risposta

11

Se si utilizza inline editing mode e vuole decidere dinamicamente quale celle della riga saranno modificabili, ad esempio in base alla contengono delle cellule si può fare questo in modo che Ho descritto here. Si può fare questo con un altro metodo anche:

$(this).jqGrid('setColProp', 'YouColumnName', {editable:false}); 

Per questo si deve solo impostare editable-false o trueprima chiamata di editRow metodo. Nel modo in cui è possibile implementare qualsiasi logica che si desidera.

AGGIORNAMENTO:Free jqGrid consente di definire editable come funzione di richiamata. Vedi the wiki article. Permette di rendere la colonna modificabile in alcune righe e di non modificabile per altre righe.

+0

ok, così che posso controllare il valore di una cella di una riga. E poi rendilo modificabile: falso. Quindi diventa non modificabile per la riga selezionata a destra ..? –

+0

@stacktrace: il metodo 'editRow' verifica quali colonne sono modificabili ** al momento **. Creava i comandi '' o '' alla modifica della cella solo per le colonne modificabili. Quindi, se si imposta la proprietà della colonna di una colonna temporanea su 'editable: false', non verrà creato alcun controllo per la modifica e la cella corrispondente non sarà modificabile come desideri. Subito dopo la chiamata del metodo 'editRow' puoi cambiare l'impostazione su qualsiasi valore che desideri. Nel modo in cui risolverai completamente il problema che hai. – Oleg

+0

Ok. Fatto. Grazie. –

0

ho avuto un requisito analogo, proprio in espansione su quello Oleg già menzionati nella sua risposta:

//get colModel properties 
var cm = jQuery("#grid").jqGrid('getColProp','myColumn'); 

//some condition to enable or disable editing 
cm.editable = false; 

//always call editRow after changing editable property 
jQuery('#grid').jqGrid('editRow', rowId, {}); 

//set default editable option 
cm.editable = true; 

Saluti :)

+0

Why you don chiamiamo 'jQuery ('# griglia'). jqGrid ('editRow', rowId, {});' alla fine, dopo aver impostato 'cm.editable = true'? – HeyJude

+0

Perché ciò renderà nuovamente modificabile la cella. Qui ciò che stai cercando di fare è rendere una cella particolare condizionalmente non modificabile, ma il resto delle colonne rimane modificabile. 'cm.editable = true;' consente di reimpostare il modello col a editabile ogni volta che 'editRow' viene richiamato di nuovo. –

Problemi correlati