Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript EnhancedGrid中ItemFileWriteStore中checkbox/dojox.grid.cells.Bool的事件处理程序?_Javascript_Event Handling_Dojo_Dojox.grid - Fatal编程技术网

Javascript EnhancedGrid中ItemFileWriteStore中checkbox/dojox.grid.cells.Bool的事件处理程序?

Javascript EnhancedGrid中ItemFileWriteStore中checkbox/dojox.grid.cells.Bool的事件处理程序?,javascript,event-handling,dojo,dojox.grid,Javascript,Event Handling,Dojo,Dojox.grid,我有一个由ItemFileWriteStore填充的增强网格。存储中的数据项之一是: 检查:true 在增强型网格中,我有: { field: "check", name: "Value Check", editable: true, type: dojox.grid.cells.Bool } 这给了我一列复选框。我还没有找到如何处理检查这些复选框的方法。我想从选中每个复选框开始,如果取消选中一个复选框,它将删除相应的数据段。是否有一些事件处理程序可以附加到dojo/o

我有一个由ItemFileWriteStore填充的增强网格。存储中的数据项之一是:

检查:true

在增强型网格中,我有:

{
   field: "check",
   name: "Value Check",
   editable: true,
   type: dojox.grid.cells.Bool
}

这给了我一列复选框。我还没有找到如何处理检查这些复选框的方法。我想从选中每个复选框开始,如果取消选中一个复选框,它将删除相应的数据段。是否有一些事件处理程序可以附加到dojo/on?或者我不知道的增强网格上的某种方法?我找不到任何关于这方面的文档,我觉得我遗漏了一些东西。

您可以这样做::

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

});

我发现最好的解决方案是将处理程序附加到“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
      }
    }
  }
} 
grid.on(“行单击”),函数(事件){
对于(var i=0;i
这是一个老问题,我在这里搜索了一下。

希望我的答案能帮助别人。

这对我来说不起作用,不知道为什么。但我会发布我提出的解决方案。
       {
            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;
                    }
                }
            }
        }