在Primefaces Datatable中单击事件更改行的字体颜色

时间:2014-03-01 10:23:28

标签: jsf primefaces

我想在单击数据表中的特定行后更改字体颜色。我已经习惯了 onclick =“this.style.color ='green';但它不会持续存在。我的代码如下:

<p:dataTable value="#{userOption.menus}" var="mn" id="dt" paginator="true" rows="10">
 <p:column>
    <h:commandLink action="#{userOption.ret(mn.menuid)}" onclick="this.style.color='green';" update="p1:dt">
        #{mn.menuname}
    </h:commandLink>
 </p:column>

</p:dataTable>

2 个答案:

答案 0 :(得分:0)

您更改颜色onclick的代码很好 这里的主要问题是h:commandLink

因为每次单击h:commandLink时,它都不会发送Ajax(POST)请求,而是使用GET请求提交整个表单。

因此,从您的代码中,颜色会发生变化,但由于其h:commandLink整个p:dataTable被重新渲染并且颜色会重新开始。

要解决此问题,您可以使用Primefaces p:commandLink,它会在您每次点击时发送一个AJAX(POST)请求,因此不会重新呈现整个p:dataTable并且您的样式更改已应用于{{1将坚持下去。

onclick

答案 1 :(得分:0)

我遇到了与h:commandLink相同的问题,并提出了一个onclick方法,并且它的工作一致。

<h:commandLink value="#{files.fileName}" onclick="changeLink(this);" id="fetchPdf" action="#{bean.fetchPdf}" target="_blank"/>

<script>
    function changeLink(el){
        el.style.color = 'purple';
    }
</script>