2011-03-19 31 views
0

在可滚动的数据表,其中显示的对象的集合,我必须添加一个手动行作为第一行。该行包含inputText,通过该inputText用户可以输入一些值,并在按Enter键时,这些值将保存并显示在最下面的行中。我无法将此手动行添加为第一行。以下是当前的代码。JSF富scroallable DATATABLE问题

<rich:scrollableDataTable value="{resultList}" var="result"> 
<rich:column> 
<f:facet name="header">Name</f:facet> 
<h:outputText value="#{result.name}" /> 
</rich:column> 
<rich:column> 
<f:facet name="header">Category</f:facet> 
<h:outputText value="#{result.category}" /> 
</rich:column> 
</rich:scrollableDataTable> 

上面的代码是从后端刚刚显示该值。

enter image description here

回答

1

1),你必须使用绑定丰富:scrollableDataTable与HtmlScrollableDataTable在支持bean实例。

在后台bean,创建它的实例与存取方法&,那么你可以通过添加组件的inputText相应的初始化。将actionListeners添加到这些输入组件&然后在侦听器中,可以将这些inputText值作为outputText作为相应的行再次添加到表中。

2)否则,您可以使用inputText而不是outputText &禁用除1st之外的后续行,这样只会显示数据 - 防止输入。

<rich:scrollableDataTable value="{resultList}" var="result"> 
<rich:column> 
<f:facet name="header">Name</f:facet> 
<h:inputText value="#{result.name}" disabled ="#{!result.isFirstRow}"/> 
</rich:column> 
<rich:column> 
<f:facet name="header">Category</f:facet> 
<h:inputText value="#{result.category}" disabled ="#{!result.isFirstRow}"/> 
</rich:column> 
</rich:scrollableDataTable> 

辅助Bean:

//--- 

public void initialize(){ 

    resultList.add(new Result("", "", true)); // Setting 1st input row enabled 
} 

public void inputListener(ActionEvent event){ 


    // appending object based on input to the resultList 

    resultList.add(new Result(inputName, inputValue, false)); 

    // added a boolean field to identify rows added later & to make them enable/disable accordingly 
} 

//--- 

我不熟悉RichFaces的,但试图实现它,因为我是用的ICEfaces这样做。