Для достижения описанной функциональности недоступен mixin. Но вы могли бы сделать одну из двух вещей.
1) Вместо использования редактора вы можете использовать функцию renderCell в столбцах для возврата различных входов/виджетов в зависимости от данных столбца/строки. В этом случае вам потребуется обработать события и обновить хранилище.
2) Если вы все еще хотите использовать редактор, существует обходное решение. используя додзе/аспект. Вам нужно будет прослушать метод insertRow сетки. И обновите ячейку соответствующими виджетами для элемента ячейки. Ниже приведен фрагмент для этого же.
aspect.after(grid, "insertRow", lang.hitch(this, 'updateRowWidgets'));
function updateRowWidgets(rowElement){
var cell = grid.cell(rowElement, <columnid>);
var rowdata = cell.row.data;
var rowWidget = .... //Create your widget according to row data.
cell.element.widget = rowWidget;
return rowElement; // remember to return this.
}
Надеюсь, это было полезно.
ОБНОВЛЕНИЕ: Второй вариант будет работать только с editOn, поскольку виджет будет показан/добавлен в сетку после события editOn, и вы сможете переключить виджет до этого. В противном случае виджеты будут добавлены в сетку до завершения insertRow.
Спасибо, первый вариант, казалось, был наиболее перспективным, но поскольку я застрял, я попробовал второй. В updateRowWidgets элемент cell.element не определен. Любая идея, что происходит не так? – thomas
Элемент cell.element не может быть неопределенным, так как он является узлом ячейки. Там может быть 2 возможности, где она может быть неопределенной. 1) ячейка не была сгенерирована. 2) столбцы, переданные как аргумент, неверны. –