Richfaces ExtendedDataTable选择问题

时间:2011-03-27 17:08:26

标签: jsf jsf-2 richfaces

请帮忙。 看看http://richfaces-showcase.appspot.com/richfaces/component-sample.jsf?demo=extendedDataTable&sample=exTableSelection&skin=blueSky

你会看到很好的“汽车市场”表,有多种选择支持。您还会注意到所选行之一以粗体显示。这条粗线意味着什么?它是通过org.richfaces.component.UIExtendedDataTable或任何其他RF类的方法以某种方式管理的吗?无法找到该行的API。

我正在尝试做的是在backing bean中创建新项目并强制表选择指向新创建的项目。我已设法通过setSelection()设置选择,但我无法控制该粗线,它仍保留在之前的位置,请帮助。

1 个答案:

答案 0 :(得分:5)

所选行的粗体样式由richfaces附带的样式表管理。富脸中的每个主题都有自己的样式表。您可以参考official documentation ( It is still a draft version)查看哪些样式类可用于自定义rich:extendedDataTable的外观。

例如,rf-edt-r-selrf-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>