0

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

check: true

然后在增强的网格中我有:

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

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

4

3 回答 3

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

});
于 2013-09-11T18:41:48.230 回答
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% 确定,其中有很多)。所以这是我想出的最好的方法。

于 2013-09-16T13:06:42.487 回答
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;
                    }
                }
            }
        }

这是一个老问题,我在这里用谷歌搜索。希望我的回答可以帮助某人。

于 2015-09-16T07:06:44.497 回答