1

我是 Dojo 的新手,遇到了一个让我完全难过的问题。我正在使用增强型网格在 Dojo 中创建数据网格。

网格中的每一行都有一个复选框,可以使用该复选框来选择该行。该复选框已使用间接选择插件实现。

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

这是数据网格的 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>

如果我删除了引用间接选择的代码 (plugins="{indirectselection...),当我单击其他数据单元格时,这些行会被选中(因为它们应该如此)。但我还需要实现间接选择的复选框。

有没有办法在不取消行选择功能的情况下使间接选择工作?

看看我将在下面链接的页面中的网格。我需要一个像这样工作的网格(页面中带有复选框的最后一个网格)

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

4

5 回答 5

1

我设法通过以下方式解决了这个问题: 1. 使用 cellClick 事件进行监听 2. 单击单元格时获取单元格的行索引 3. 将其设置为选中。

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

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

于 2013-05-10T04:48:33.477 回答
0

你听说过 DGRID 吗?我认为你应该检查一下。它真的非常适合 dojo 。

这里有一些有用的网站。

Dgrid 主页

Git 中心文档

于 2013-05-08T10:45:26.167 回答
0

使用下面的代码来收听网格选择并检查selectedRows返回的内容并使用该行的索引来切换行

dojo.connect(grid, "onRowClick", function(e) {
     var selectedRows= grid.selection.getSelected();
     grid.rowSelectCell.toggleRow(selectedRows[i], true);
});
于 2013-05-08T12:27:53.513 回答
0

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

grid.on("SelectionChanged", function(event)
    { 
        var rowId = event.rowIndex;
        grid.selection.setSelected(rowId, true);
        grid.render();
    }
于 2017-08-23T10:53:15.523 回答
0

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

grid.on("SelectionChanged", function(event)
    { 
        var rowId = event.rowIndex;
        grid.selection.setSelected(rowId, true);
        grid.render();
          }
于 2017-08-23T10:50:20.387 回答