2011-05-18 48 views
1

如何將新行添加到列表末尾的extendedDataTable?有一些解決方案嗎?RICH:dataTable - 添加新行

JSF表例如:

enter image description here

你能幫助我嗎?

UPDATE

我可以在使用例如豐富的添加新項:popupPanel,但不是在數據表中創建一個新的行。我想說的是,我可以保存但不像使用BalusCs JSF guide那樣優雅。 XHTML的

部分:BEAN的

<rich:extendedDataTable 
id="tableDetail" 
value="#{myBdeCheck.dataListBde}" 
var="bdeItem"> 

<rich:column width="80px"> 
    <f:facet name="header"> 
    <h:outputText value="Směna" /> 
    </f:facet> 
    <h:outputText value="#{bdeItem.dayShift}"/> 
</rich:column> 

<rich:column width="70px"> 
    <f:facet name="header"> 
    <h:outputText value="Karta" /> 
    </f:facet> 
    <h:outputText value="#{bdeItem.bdeno}"/> 
</rich:column> 


部分: 包常見;

@ViewScoped 
@ManagedBean(name="myBdeCheck") 
public class MyBdeCheck extends Tools 
{ 
    /**/ 
    private static final long serialVersionUID = -6586004426692130933L; 

    private Session session; 
    private List<BDE> dataListBde; //= new ArrayList<BDE>(); 
    private int currentIndexDetail; // index for BDEDetail datatable 

    private BDECheckView editedWork; // one item of BdeCheckView 
    private BDE BDEItem;    // one item of BdeData 

    // Constructor 
    public MyBdeCheck() 
    { 
    editedWork = new BDECheckView(); 
    BDEItem = new BDE(); 
    } 

    /** GET DATA FROM BDEData ******************* 
    * @param personalNum, dayShift [whole day: YYYY-MM-DD%] 
    */ 
    private void criteriaCheck() 
    { 
    try 
    { 
     Criteria criteria = session.createCriteria(BDE.class); 
     {some restrictions} 
     dataListBde = criteria.list(); 
    } 
    catch (Exception e) {...} 
    } 

    public void saveBde() 
    {  
    try 
    { 
     DaoCrud.update(dataListBde, 'R'); // ulozeni do dtb 
    } 
    catch {...} 
    } 

    public void saveNew() {...} 

// and GETTERS AND SETTERS 
} 
+0

什麼RichFaces的/ JSF的版本? – 2011-05-18 12:48:37

+0

JSF 2,RichFaces 4 ... – gaffcz 2011-05-18 12:51:17

+0

你可以添加一個新元素到支持dataTable的集合然後reRender組件嗎? – 2011-05-18 13:02:13

回答

2

你的數據表上造型寶典:

private List<BDE> dataListBde; 

要添加新行你就只需要添加一個新的BDE()到集合中。

this.dataListBde.add(new BDE()); 

然後你可以reRender你的dataTable看到新的行。

最後,在你的XHTML,你可以有條件地呈現一個inputText的或的outputText:

<rich:column width="70px"> 
    <f:facet name="header"> 
     <h:outputText value="Karta" /> 
    </f:facet> 
    <h:outputText value="#{bdeItem.bdeno}" rendered="#{bdeItem.bdeno != null}"/> 
    <h:inputText value="#{bdeItem.bdeno}" rendered="#{bdeItem.bdeno == null}"/> 
</rich:column> 
+0

好,簡單。非常感謝,戴夫! :-) – gaffcz 2011-05-18 16:20:12

+0

很高興我能幫忙。 – 2011-05-18 16:24:37

3

一般JSF的做法是在支持Bean底層列表的末尾,如果該行元素包含的數據添加一個空的元素,然後在你的dataTable渲染h:outputTexth:inputText或其他一些輸入如果行元素爲空,則爲組件。

查看BalusC's blog entry on "Using datatables"舉例。

它適應Richfaces應該不是一個大問題。

+0

謝謝,我會盡量適應它。我的JSF表格使用BalusC指南製作而成。但我認爲豐富:dataTable可能有這樣的功能包括... – gaffcz 2011-05-18 09:42:31