Отключить или включить редактирование для селективной ячейки в Dojox Data Grid

StackOverflow https://stackoverflow.com//questions/12690324

Вопрос

Как отключить или включить редактирование для селективной ячейки в Dojox Data Grid I.e

Представьте, что у меня есть два столбца (A, B) в сетке данных.Я хочу значение столбца B, редактируемую на основе значения столбца A. Я видел один раствор в переполнении стека, который был специфичен для версии Dojo.Я хотел бы знать, есть ли API, с помощью которых мы можем достичь выше, объективной.

Это было полезно?

Решение

Мой предпочтительный метод - переопределить

canEdit: function(inCell, inRowIndex)

Метод данных DataGrid.Из этого вы можете получить товар:

this.getItem(inRowIndex)

Тогда работай, если оно должно быть редактируемым или нет, и вернуть true / false.

Это переопределяет редактируемый флаг в столбце, хотя вам нужно что-то сделать с этим, если это необходимо.

Другие советы

Нет API как таковой.У меня также было подобное требование недавно, и вот как я его реализовал:

1) Первоначально столбец B редактируется, потому что я сделал его так в разделе «Поля» сетки 2) Используйте onrowClick, чтобы захватить рендеринг строк.Что-то вроде этого должно делать

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

Следующий метод затем отключает встроенное редактирование требуемого столбца.Мы проходим индекс ряд и индекс столбца к этой следующей функции:

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

Надеюсь, что помогает.Возможно, вы можете добавить jsfiddle, и мы можем попробовать его исправить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top