<th>
每当用户单击某个<th>
. 所有这些都在PrimeFaces中 <p:dataTable>
我能想到的最简单的方法就是这样做,所以我开始研究,并在这里JQuery
偶然发现了这个答案。
在那里,BalusC提供了一段代码,我可以为自己的用例编辑它,我最终得到了这个:
$(document).ready(function () {
$('#mainForm\\:table th').click(function () {
var th = $(this);
var index = $('th', th.parents('tr')).index(th);
var column = $('tbody td:nth-child(' + (index + 1) + ')', th.parents('table'));
column.addClass('light-grey');
});
});
这段代码实际上对我有用。但有一件事我想不通。
一旦light-grey
类被添加到列中,它就会被删除。我不知道这是否与 JSF 的生命周期有关,或者与我不知道的渲染时间有关。
所以我得到的结果是这些列闪烁为灰色并快速返回。
有谁知道为什么会这样?
编辑 1
这是我的xhtml
:
<h:form id="mainForm">
<p:dataTable id="table" value="#{myManagedBean.items}" var="item"
sortBy="#{item.value2}">
<p:column headerText="Value 1" sortBy="#{item.value1}">
<h:outputText value="#{item.value1}" />
</p:column>
<p:column headerText="Value 2" sortBy="#{item.value2}">
<h:outputText value="#{item.value2}" />
</p:column>
<p:column headerText="Value 3" sortBy="#{item.value3}">
<h:outputText value="#{item.value3}" />
</p:column>
</p:dataTable>
</h:form>
我创建了一个小项目来隔离问题,上面的表格是我用于测试的表格。
是的,每当我单击标题以更改排序时,都会触发 AJAX 请求。我检查了 Chrome 调试器的网络选项卡。