当单击Primefaces数据表中的另一行时,不要取消选择行
Do not unselect rows when clicking on another rows in Primefaces datatable
我正在使用Primefaces 3.5数据表。该表启用了多选择模式。基本上,这个表与[本展示][1]中的最后一个表相同。表是这样定义的
<p:dataTable id="myTable" var="item" value="#{myController.items}" selection="#{myController.selectedItems}" rowKey="#{item.id}">
<p:column selectionMode="multiple"/>
<p:column headerText="Id">
...
因此,当用户通过单击复选框选择了一些行,然后意外地单击了一行时,除了用户最后单击的行外,所有选中的行都变为未选中的。
问题是:是否有任何解决方案来维持行选择,即使用户将单击行出复选框?
我的一些观察:
- 如果用户按Ctrl并单击该行,则所有其他行将保持选中。这种行为正是我想要的,但没有按Ctrl。
- 我已经查看了
primefaces.js
源,发现其他行被这个函数clearSelection:function(){}
取消选择。当用户点击行时,不执行它是可以的。
如果您阅读了最新的文档,您可以看到在较新的版本中支持它。因此,要在3.5版本中修复这个问题,请查看更新版本的源代码,了解他们是如何"修复"这个问题的,并创建一个js补丁……当然,你也可以尝试使用更新的PF版本。后者有很多好处。
不在这里发布(甚至试图创建)补丁(或试图创建一个)的原因是,在这里发布补丁太复杂了,而且超出了SO从问题(OP添加在那里作为'答案')复制:
正如Kukeltje所建议的,我已经创建了primefaces.js
补丁,修改了DataTable
小部件。为此,我从jar文件中复制了primefaces.js
,进行了修改并将其放在以下目录下:
webapp
|-- META-INF
|-- WEB-INF
|-- resources
| |-- primefaces
| | `-- primefaces.js
我在primefaces.js
中所做的修改只是从onRowClick: function(e, d, a)
函数中删除this.unselectAllRows()
。
相关文章:
- 如何在Angular UI网格中选择下一行
- 允许为显示的每个数据表选择一行
- 使用下拉选择菜单高亮显示一行表格单元格
- 从 html 表中选择一行(突出显示)并在单击按钮时发送值
- jquery插件 - 已选择 - 多项选择不在一行中列出,而是列在一列中
- 更改多个文本框并选择从一行检索到另一行的数据
- 如何添加“;选择“;当一行被单击时,类仅限于表的一行
- 我已经创建了一个动态的下拉选择列表,它指向一行;如何使该行成为变量
- 选择并高亮显示一行中的单元格
- 禁用“基于同一行上的另一个元素进行选择”
- 在同一行中对齐选择、输入、提交而不向下
- koGrid-如何用程序选择一行
- 从数据表中选择一行以显示单选按钮值
- 仅获取具体化选择中的最后一行
- 在 CSS 中有一个单独的伪选择器,以显示有关一行中多个元素的信息
- 在 jqxGrid 中按一个单元格的值选择一行
- 如何向 Javascript 表添加一行,其中包含包含 jQuery 中的日期选择器函数的单元格
- 选择/突出显示行并更改同一行中突出显示的文本字段的值
- 如何在文本区域中选择(一行或多行)
- 如何知道哪一行选择了哪个单选按钮 ID