我正在使用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">
...
因此,当用户通过单击复选框选择某些行,然后意外地单击一行时,除了用户最后点击的行之外,所有选定的行都将被取消选中。
问题是:即使用户点击复选框中的行,是否有任何解决方法来维护行?
我的一些观察结果:
primefaces.js
来源,发现此函数clearSelection:function(){}
取消了其他行。当用户点击行时,不执行它会很好。答案 0 :(得分:1)
如果您阅读了最新的文档,则可以看到它在较新版本中受支持。因此,为了解决3.5的问题,请查看新版本的来源,了解他们如何“修复”这个并创建一个js补丁...您还可以尝试使用更新的PF版本。做后者时有很多好处。
不在此处发布(或者甚至尝试创建)补丁的原因(或尝试创建补丁)的原因是,复制到此处发布并且超出SO的范围是非常的/ p>
答案 1 :(得分:-1)
从问题中复制(OP在其中添加了“答案”)
按照Kukeltje的建议,我用修改后的primefaces.js
小部件创建了DataTable
补丁。为此,我从jar文件中复制了primefaces.js
,进行了修改并将其放在以下目录中:
webapp
|-- META-INF
|-- WEB-INF
|-- resources
| |-- primefaces
| | `-- primefaces.js
我在primefaces.js
中所做的修改只是从this.unselectAllRows()
函数中删除了onRowClick: function(e, d, a)
。