我有一个使用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中的单元格?
答案 0 :(得分:1)
如果您可以按列索引和行ID引用单元格,则可以使用rowStyleClass
p:dataTable
属性。
例如,如果您将其设置为rowStyleClass="#{lndClient.stringId}"
,则可以通过xyz
之类的内容引用stringId $('tr.xyz td:first-child+td+td')
的第3行 - 我相信您可以上来有一个更好的选择器。