Вот мой DataGrid:
// $ is a reference to `this` as it lies in an anonymous function
$.grid = new DataGrid({
store : $.dataStore,
query : {id : "*"},
structure : [
{
noscroll : true,
cells : [{ name : "Recipe", field : 'name', width : '200px' }],
},
{
cells : [
[
{ name : 'ID#', field : 'id', width : '50px'},
{ name : 'Category', field : 'category', width : '100px'},
{ name : 'Status', field : 'status', width : '100px'},
{ name: "Actions", width : '200px', type: dojox.grid.cells._Widget, formatter : $._actionButtons}
]
] // end cells
}
]
}, $.targetNode)
$.grid.startup();
$.grid.on("RowClick", function(e){
console.log(this.getItem(e.rowIndex))
})
И мой объект formatter
для ячейки Действия:
_actionButtons : function(){
var _self = this;
var _args = arguments;
this.group = new Pane()
var full = new Button({
label: 'View Full',
style : { fontSize : '80%'},
onClick : function(){
try {
_self.grid.onRowClick.apply(this, arguments)
}catch(e){}
}
});
full._destroyOnRemove = true;
var edit = new Button({
label : 'Edit',
style : {fontSize: '80%'}
});
edit._destroyOnRemove = true;
construct.place(full.domNode, this.group.containerNode)
construct.place(edit.domNode, this.group.containerNode)
return this.group;
}
Я пытаюсь получить доступ к объекту события, который будет передан обычным событием onRowClick
в DataGrid. Сейчас это работает, но в блоке on("RowClick"...)
я получаю несколько журналов. Без блока try...catch
я получаю сообщение об ошибке, поскольку rowIndex не существует в e
, а затем еще 2 журнала, где он существует.
Это четвертая или около того идея, которую я включил pub/sub, emit() и т. д. У меня есть ощущение, что несколько журналов вызваны всплывающим поведением (Button -> Row -> DataGrid или что-то в этом роде), но получение объект события onRowClick для передачи в кнопки, созданные в средстве форматирования, кажется невозможным.
Я просто хочу получить доступ к rowIndex (и другим свойствам DataGrid-esque) из события onClick
виджета Button для обработки в соответствии с нажатой кнопкой.