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.

È stato utile?

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, '&amp;').replace(/</g, '&lt;') : 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top