所选行的粗体样式由 Richfaces 附带的样式表管理。richfaces 中的每个主题都有自己的样式表。您可以参考official documentation ( It is still a draft version) 了解哪些样式类可用于自定义rich:extendedDataTable 的外观。
例如rf-edt-r-sel或rf-edt-r-act定义了选中行的样式,你可以通过在你使用rich:extendedDataTable的页面中为这些样式类名声明一个样式来覆盖它们
<style type="text/css">
.rf-edt-r-sel{
background-color: yellow;
}
.rf-edt-r-act{
font-weight: bold;
color: red;
}
</style>
回复评论:
RowKey 似乎是扩展表的行号。如果要从 UIExtendedDataTable 获取底层对象(即 InventoryItem ),则必须在调用 getRowData() 之前使用 setRowKey(selectionKey) 设置要检索的行号以获取实际对象。因此dataTable.setRowKey(selectionKey) 用于从UIExtendedDataTable 中获取选定的InventoryItem,以便将它们放入selectionItems(将显示在扩展表旁边的“选定行”框中)。对于Object originalKey = dataTable.getRowKey(); 和dataTable.setRowKey(originalKey);,您可以参考此link。
在richfaces 3.3 中,我发现UIExtendedDataTable 有一个名为setActiveRowKey() 的方法,似乎可以设置活动记录。但是在最新版本的richfaces 4.0 CR1中被删除了。所以也许你可以使用UIExtendedDataTable's java script API来达到同样的效果。
首先在 MBean 中定义一个名为 boldRow 的 int 属性。然后您将有一个<a4j:commandButton> 来调用 Mbean 的方法。此方法将根据您的逻辑分配您要选择的行号。按钮的oncomplete 属性应该调用UIExtendedDataTable 的JavaScript API 来选择行号等于boldRow 的行,然后使用render 属性刷新UIExtendedDataTable。所以<a4j:commandButton> 和<rich:extendedDataTable> 应该是这样的:
<a4j:commandButton value="Submit" action = "#{MBean.action}" render="#{rich:clientId('table')}"
oncomplete="#{rich:component('table')}.selectRow(#{MBean.boldRow}); #{rich:component('table')}.setActiveRow(#{MBean.boldRow});" />
<rich:extendedDataTable id="table" .....
................
</rich:extendedDataTable>