用Javascript编辑Primefaces数据表的单元格

Edit with Javascript a cell of a Primefaces DataTable

本文关键字:单元格 数据表 Primefaces Javascript 编辑      更新时间:2023-09-26

我有一个用PrimeFaces构建的不可编辑的DataTable。该表最初填充有通过Bean的getter获得的值:

<p:dataTable var="lndClient" value="#{clientBean.model}" rowKey="#{lndClient.stringId}">

加载表后,我需要通过Javascript更新一些单元格。原因是我使用的是cometD,这是一种Ajax推送技术模式,在客户端使用Javascript JQuery。

我知道我可以通过使用之类的东西来更新单元格

$('td#id').html("value"); 

但我的问题是,我不知道我的细胞id是什么。查看生成的html,我看到行是:

<tr data-ri="1" class="ui-widget-content ui-datatable-odd"><td><div class="ui-dt-c"><a id="centerTabView:accordion:j_idt18:j_idt19:1:j_idt22" ...>
...
<tr data-ri="2" class="ui-widget-content ui-datatable-even"><td><div class="ui-dt-c"><a id="centerTabView:accordion:j_idt18:j_idt19:2:j_idt22" ...>

事实上,行标识符就在那里,尽管它在td标签中。其他列为:

<td><div class="ui-dt-c">...</div></td>

所以,我的问题是:如何识别PrimeFaces数据表中的单元格?

如果可以通过列索引和行id引用单元格,则可以使用p:dataTablerowStyleClass属性。

例如,如果您将其设置为rowStyleClass="#{lndClient.stringId}",您将能够通过类似$('tr.xyz td:first-child+td+td')的方式引用字符串ID为xyz的行的第三列——我相信您可以想出更好的选择器。