【发布时间】:2011-08-27 20:17:42
【问题描述】:
如何在列表末尾向extendedDataTable 添加新行?有什么解决办法吗?
JSF 表示例:
你能帮帮我吗?
更新:
我可以使用例如 Rich:popupPanel 添加新项目,但不能通过在数据表中创建新行来添加。我想说的是,我可以保存但没有使用BalusCs JSF guide那么优雅。
XHTML 的一部分:
<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>
BEAN 的一部分: 包通用;
@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
}
【问题讨论】:
-
什么版本的richfaces/jsf?
-
你能在支持 dataTable 的集合中添加一个新元素,然后重新渲染组件吗?
-
(我已经编辑了我的帖子)我只是添加新项目和重新渲染数据表,但不使用集合
-
您是否有机会发布 xhtml 和支持 bean 以便我们可以看到它现在是如何工作的?我认为以这种方式更容易看到您要完成的工作。
-
好的。因此,您的列表由一个集合支持:私有 List
dataListBde;。因此,如果您向该集合添加一个新的 BDE() 并重新呈现数据表,您的新行将显示出来。然后,您可以保存集合以持久保存它。我错过了什么?