使用Javascript编辑Primefaces DataTable的单元格

时间:2012-01-28 20:00:06

标签: javascript jquery jsf datatable primefaces

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

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

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

我知道我可以使用类似

的内容来更新单元格
$('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 DataTable中的单元格?

1 个答案:

答案 0 :(得分:1)

如果您可以按列索引和行ID引用单元格,则可以使用rowStyleClass p:dataTable属性。

例如,如果您将其设置为rowStyleClass="#{lndClient.stringId}",则可以通过xyz之类的内容引用stringId $('tr.xyz td:first-child+td+td')的第3行 - 我相信您可以上来有一个更好的选择器。