你会看到很好的“汽车市场”表,有多种选择支持。您还会注意到所选行之一以粗体显示。这条粗线意味着什么?它是通过org.richfaces.component.UIExtendedDataTable
或任何其他RF类的方法以某种方式管理的吗?无法找到该行的API。
我正在尝试做的是在backing bean中创建新项目并强制表选择指向新创建的项目。我已设法通过setSelection()
设置选择,但我无法控制该粗线,它仍保留在之前的位置,请帮助。
答案 0 :(得分:5)
所选行的粗体样式由richfaces附带的样式表管理。富脸中的每个主题都有自己的样式表。您可以参考official documentation ( It is still a draft version)查看哪些样式类可用于自定义rich:extendedDataTable
的外观。
例如,rf-edt-r-sel
或rf-edt-r-act
定义所选行的样式,您可以通过在使用rich:extendedDataTable
<的页面中为这些样式类名称声明样式来覆盖它们。 / p>
<style type="text/css">
.rf-edt-r-sel{
background-color: yellow;
}
.rf-edt-r-act{
font-weight: bold;
color: red;
}
</style>
回复评论:
RowKey
似乎是扩展表的行号。如果要从InventoryItem
获取基础对象(即UIExtendedDataTable
),则必须在调用setRowKey(selectionKey)
之前使用getRowData()
设置要检索的行号实际的对象。因此dataTable.setRowKey(selectionKey)
用于从InventoryItem
获取所选的UIExtendedDataTable
,以便将它们放入selectionItems
(将显示在“选定的行”框中,即Object originalKey = dataTable.getRowKey();
除了扩展表)。出于dataTable.setRowKey(originalKey);
和UIExtendedDataTable
的目的,您可以参考此link。
在richfaces 3.3中,我发现UIExtendedDataTable
有一个名为setActiveRowKey()的方法,它似乎可以设置活动记录。但是在最新版本的richfaces 4.0 CR1中删除了它。所以你可以使用int
's java script API来达到同样的效果。
首先在MBean中定义名为boldRow
的{{1}}属性。然后你将有<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>