Question

Comment désactiver ou activer la modification d'une cellule sélective dans la grille de données dojox, c'est-à-dire

Imaginez que j'ai deux colonnes (A, B) dans une grille de données.Je souhaite que la valeur de la colonne B soit modifiable en fonction de la valeur de la colonne A.J'ai vu une solution de débordement de pile qui était spécifique à une version DOJO.Je voudrais savoir s'il existe des API grâce auxquelles nous pouvons atteindre l'objectif ci-dessus.

Était-ce utile?

La solution

Ma méthode préférée consiste à remplacer le

canEdit: function(inCell, inRowIndex)

méthode du DataGrid.A partir de là, vous pouvez obtenir l'objet :

this.getItem(inRowIndex)

puis déterminez s'il doit être modifiable ou non, et renvoyez vrai/faux.

Cependant, cela remplace l'indicateur modifiable sur la colonne, vous devrez donc faire quelque chose avec cela si nécessaire.

Autres conseils

Il n'y a pas d'API comme tel.J'ai également eu des exigences similaires récemment et voici comment je l'ai mis en œuvre:

1) Initialement, la colonne B est modifiable parce que je l'ai dit dans la section des champs de la grille 2) Utilisez ONROWCLICK pour capturer le rendu des rangées.Quelque chose comme ça devrait faire

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);
  }
});

La méthode suivante désactive ensuite l'édition en ligne de la colonne requise.Nous passons l'indice d'index de ligne et de colonne à cette fonction suivante:

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]);
    }
}

espère que cela aide.Vous pouvez probablement ajouter un jsfiddle et nous pouvons essayer de le résoudre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top