增强网格中的行选择

Posted

技术标签:

【中文标题】增强网格中的行选择【英文标题】:Row Selection in Enhanced Grid 【发布时间】:2013-05-08 10:21:25 【问题描述】:

我是 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  field="empNo"  formatter="formatLink">empNo</th>
      <th  field="name">name</th>
      <th  field="email">email</th>
      <th  field="phone">phone</th>
    </tr>
  </thead>
</table>

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

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

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

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

【问题讨论】:

【参考方案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 的行为出乎意料。

【讨论】:

【参考方案2】:

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

这里有一些有用的网站。

Dgrid Main webpage

Git hub Documentation

【讨论】:

是的。似乎我的团队出于某种原因决定不使用 DGrid。所以我正在寻找一个适用于现有 EnhancedGrid 的修复程序。【参考方案3】:

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

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

【讨论】:

grid.selection.getSelected 没有返回选定的行!。我无法弄清楚为什么。但我设法通过使用 CellClick 事件并获取“event.rowIndex”并将其设置为选中来解决问题。【参考方案4】:

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

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

以上是关于增强网格中的行选择的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 jquery 插件网格:选择行时,调用动作并隐藏网格中的行

隐藏和显示剑道网格​​的行

剑道网格丢失选定的行

Extjs-如何用鼠标右键选择网格中的行

在 Extjs 3 中取消选择网格的行

为啥单击 ExtJS 4 网格面板操作列中的图标不选择行?