2016-07-05 8 views
0

Я хотел бы создать PropertyGrid, используя dgrid (и dojo). Насколько я вижу, один столбец может содержать только один тип редактора. Существует ли какое-либо обходное решение для управления различными редакторами для разных ячеек в одной строке?СвойствоGrid подобно dgrid

Редактор mixin, кажется, создает единый элемент управления в виде кеширования в строке, но, возможно, есть что-то, что я пропустил.

Большое спасибо!

ответ

0

Для достижения описанной функциональности недоступен 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.

+0

Спасибо, первый вариант, казалось, был наиболее перспективным, но поскольку я застрял, я попробовал второй. В updateRowWidgets элемент cell.element не определен. Любая идея, что происходит не так? – thomas

+0

Элемент cell.element не может быть неопределенным, так как он является узлом ячейки. Там может быть 2 возможности, где она может быть неопределенной. 1) ячейка не была сгенерирована. 2) столбцы, переданные как аргумент, неверны. –