我有一个由ItemFileWriteStore填充的增强型网格。商店中的一项数据是:
check: true
然后在增强的网格中我有:
{
field: "check",
name: "Value Check",
editable: true,
type: dojox.grid.cells.Bool
}
这给了我一个充满复选框的列。我一直无法找到如何处理这些复选框。我想从选中的每个复选框开始,如果取消选中它,则会删除相应的数据。是否有一些事件处理程序我可以附加dojo/on
?或者我不知道的增强网格上的某些方法?我无法找到任何关于此的文档,我觉得我错过了一些东西。
答案 0 :(得分:0)
你会做这样的事情::
require(['dijit/registry','dojo/on','dijit/WidgetSet','dojo/on'],function(reg,on){
reg.byClass("dojox.grid.cells.Bool").forEach(function(node){
on(node.domNode,'click',function(){alert('hello');});
});
});
答案 1 :(得分:0)
我发现最好的解决方案是将一个处理程序附加到" RowClick"事件,因为每次单击复选框时,都会触发RowClick事件。然后遍历数据存储并根据复选框更新所有内容。它绝对没有效率,但是我需要它。它是这样的:
grid.on("RowClick", function (event) {
for (var i=0; i<store._arrayOfAllItems.length; i++) {
if (grid.getItem(i)) {
if (grid.getItem(i).check[0]) {
// row is checked, do something
} else {
// row is not checked, do something else
}
}
}
}
据我所知,event
没有传递有用的信息来识别网格中的哪一行被点击(我不是100%肯定,那里有很多在里面)。所以这是我提出的最佳方式。
答案 2 :(得分:0)
{
name: 'Paid',
field: 'paid',
width: '40px',
type: dojox.grid.cells.Bool,
editable:true,
doclick:function(e){
if(e.target.tagName == 'INPUT'){
if(confirm("Sure?")){
this.applyStaticValue(e.rowIndex);
} else {
e.target.checked = !e.target.checked;
}
}
}
}
这是一个老问题,我在这里搜索。 希望我的回答可以帮助别人。