Pergunta

Como desabilitar ou habilitar a edição de células seletivas na grade de dados dojox, ou seja

Imagine que tenho duas colunas (A, B) em uma grade de dados.Quero que o valor da coluna B seja editável com base no valor da coluna A.Eu vi uma solução de estouro de pilha que era específica para uma versão DOJO.Gostaria de saber se existem APIs pelas quais possamos atingir o objetivo acima.

Foi útil?

Solução

Meu método preferido é substituir o

canEdit: function(inCell, inRowIndex)

método do DataGrid.A partir disso, você pode obter o item:

this.getItem(inRowIndex)

em seguida, descubra se deve ser editável ou não e retorne verdadeiro/falso.

Porém, isso substitui o sinalizador editável na coluna, então você precisará fazer algo com isso, se necessário.

Outras dicas

Não existe API como tal.Eu também tive um requisito semelhante recentemente e aqui está como o implementei:

1) Inicialmente, a coluna B é editável porque eu o fiz na seção de campos da grade 2) Use OnRowClick para capturar a renderização das linhas.Algo assim deveria servir

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

O método a seguir não permite a edição embutida da coluna necessária.Estamos passando o índice de linha e o índice de coluna para esta seguinte função:

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

Espero que ajude.Provavelmente você pode adicionar um jsfiddle e podemos tentar consertá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top