Disabilita o abilita Modifica per la cella selettiva nella griglia dei dati dojox
-
12-12-2019 - |
Domanda
Come disabilitare o abilitare Modifica per cella selettiva in DOJOX DATA GRID I.E
Immagina di avere due colonne (A, B) in una griglia di dati.Voglio il valore della colonna di B per essere modificabile in base al valore della colonna A. Ho visto una soluzione in overflow dello stack che era specifico per una versione dojo.Mi piacerebbe sapere se ci sono API con cui possiamo ottenere il suddetto obiettivo.
Soluzione
Il mio metodo preferito è quello di ignorare il
canEdit: function(inCell, inRowIndex)
Metodo del DataGrid.Da quello, puoi ottenere l'oggetto:
this.getItem(inRowIndex)
Quindi attenersi se dovrebbe essere modificabile o no, e restituire true / false.
Questo ha sopravvito il flag modificabile sulla colonna, quindi dovrai fare qualcosa con quello se necessario.
Altri suggerimenti
Non c'è API come tale.Ho anche avuto requisiti simili di recente ed ecco come ho implementato:
1) Inizialmente la colonna B è modificabile perché l'ho reso così nella sezione dei campi della griglia 2) Utilizzare onrowClick per catturare il rendering delle righe.Qualcosa del genere dovrebbe fare
dojo.connect(grid, "onRowClick", grid, function(evt){
var idx = evt.rowIndex,
item = this.getItem(idx);
// get a value out of the item
msname = this.store.getValue(item, "msname");
if(msname != null &U& (trim(msname) == trim(offsetName))) {
dojox.grid.cells._Base.prototype.format(idx, item);
}
});
.
Il metodo seguente quindi disasferisce la modifica in linea della colonna richiesta.Stiamo passando indice di riga e indice di colonna a questa seguente funzione:
dojox.grid.cells._Base.prototype.format = function(inRowIndex, inItem){
var f, i=grid.edit.info, d=this.get ? this.get(inRowIndex, inItem) : (this.value || this.defaultValue);
d = (d && d.replace && grid.escapeHTMLInData) ? d.replace(/&/g, '&').replace(/</g, '<') : d;
//Check inRowIndex and inItem to determine whether to be editable for this row here.
if(this.editable && (this.alwaysEditing || (i.rowIndex==inRowIndex && i.cell==this))){
return this.formatEditing(d, inRowIndex);
}else{
return this._defaultFormat(d, [d, inRowIndex, this]);
}
}
.
Spero che ti aiuti.Probabilmente puoi aggiungere un jsfiddle e possiamo provare a sistemarlo.