单击Primefaces数据表中的其他行时,请勿取消选择行

时间:2015-07-23 15:10:36

标签: javascript jsf primefaces

我正在使用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(){}取消了其他行。当用户点击行时,不执行它会很好。

2 个答案:

答案 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)