2013-05-08 58 views
1

我是Dojo的新手,遇到一个让我完全陷入困境的问题。我正在使用增强型网格在Dojo中创建数据网格。增强网格中的行选择

网格中的每一行都有一个可用于选择该行的复选框。该复选框已使用indirectselection插件实现。

现在,当我选择一行使用复选框一切工作正常。但是当我通过点击其他数据单元来选择一行时,该行不会被选中!

继承人的DataGrid的JSP部分

<table data-dojo-id="grid" data-dojo-type="dojox.grid.EnhancedGrid" plugins="{indirectSelection: {headerSelector:true}, filter: true,pagination: true}" 
    data-dojo-props="store:icGrid, 
    clientSort:true " formatterScope="myFormatters" 
    style="width: 100%; height: 20em;"> 
    <thead> 
     <tr> 
     <th width="25%" field="empNo" formatter="formatLink">empNo</th> 
     <th width="25%" field="name">name</th> 
     <th width="25%" field="email">email</th> 
     <th width="25%" field="phone">phone</th> 
    </tr> 
    </thead> 
</table> 

如果我删除代码指的是间接选择(插件=“{indirectselection ...)的行获得选择当我点击其他数据单元(如他们应该),但我还需要的是indirectselection工具。

有没有办法让indirectselection工作不带走行选择功能的复选框?

看看页面我的网格将链接如下需要

http://dojotoolkit.org/documentation/tutorials/1.8/working_grid/demo/selector.php

回答

1

我设法解决这个问题通过1.使用cellClick事件来侦听2.单击单元格时获取单元格的rowindex 3.将其设置为选中状态。

grid.on("CellClick", function(event) 
    { 
     var rowId = event.rowIndex; 
     grid.selection.setSelected(rowId, true); 
     grid.render(); 
      } 

grid.selection.getSelected();没有返回选定的行,我想知道这是否是兼容性问题?这似乎是当我使用indirectSelection插件行选择行为在意想不到的方式。

0

你有没有听说过DGRID是(与复选框的最后一个网格的页面)的作品一样, 的网格。 我认为你应该检查它。 道场真的很好用。

以下是一些有用的网站。

Dgrid Main webpage

Git hub Documentation

+0

是的。看起来我的团队决定不出于某种原因使用DGrid。所以我正在寻找一个适用于现有EnhancedGrid的修补程序。 – 2013-05-09 04:39:19

0

使用此代码下面听电网选择和检查什么selectedRows返回,并使用该行的索引toggleRow

dojo.connect(grid, "onRowClick", function(e) { 
    var selectedRows= grid.selection.getSelected(); 
    grid.rowSelectCell.toggleRow(selectedRows[i], true); 
}); 
+0

grid.selection.getSelected没有返回选定的行!我无法弄清楚为什么。但我设法通过使用CellClick事件并获取'event.rowIndex'并将其设置为选中来解决此问题。 – 2013-05-10 04:41:35

0

简单代码: - “SelectionChanged”even甚至可用。所以这样的代码: -

grid.on("SelectionChanged", function(event) 
    { 
     var rowId = event.rowIndex; 
     grid.selection.setSelected(rowId, true); 
     grid.render(); 
      } 
0

“SelectionChanged”甚至可用。所以这样的代码: -

grid.on("SelectionChanged", function(event) 
    { 
     var rowId = event.rowIndex; 
     grid.selection.setSelected(rowId, true); 
     grid.render(); 
    }