extendedDataTable 中的行选择问题
Problem with row selection in extendedDataTable
我对 richfaces 中的 extendedDataTable 有疑问。我正在尝试 select extendedDataTable 中的一行并且 selection 有效。这是我正在使用的一些代码。
...
<rich:extendedDataTable id="dt2_documenti_a4" styleClass="tableLeft"
rowClasses="row1,row2" rows="10" value="#{formCarriBombolaiDettaglioInterventoBean.elencoErogazioni}" var="doc"
selectionMode="single">
<a4j:ajax event="selectionchange" execute="@this"/>
<a4j:ajax listener="#{carriBombolaiPMIBean.updateCheckboxErogazioneEvPub(doc)}" event="selectionchange"
render="dt2_documenti_a4, calcoli_preventivo_ev_pub, mod_preventivo, panel_preventivi"/>
...
问题是传递给方法 carriBombolaiPMIBean.updateCheckboxErogazioneEvPub(doc)
的变量 doc
为空。有人知道问题出在哪里吗?
您的 doc
变量仅在呈现(或遍历)table 行时才有意义,因为 selectionchange
事件是在 table 级别上触发的,它将为空。
您需要跟踪所选行并根据此从 table 中获取所选行:
<rich:extendedDataTable selection="#{carriBombolaiPMIBean.selection}" … >
…
private Collection<Object> selection;
private List<Item> selectionItems = new ArrayList<Item>();
public void selectionListener(AjaxBehaviorEvent event) {
AbstractExtendedDataTable dataTable = (AbstractExtendedDataTable) event.getComponent();
Object originalKey = dataTable.getRowKey();
selectionItems.clear();
for (Object selectionKey : selection) {
dataTable.setRowKey(selectionKey);
if (dataTable.isRowAvailable()) {
selectionItems.add((Item) dataTable.getRowData());
}
}
dataTable.setRowKey(originalKey);
}
有关完整示例,请参阅展示柜中的 row selection demo。
我对 richfaces 中的 extendedDataTable 有疑问。我正在尝试 select extendedDataTable 中的一行并且 selection 有效。这是我正在使用的一些代码。
...
<rich:extendedDataTable id="dt2_documenti_a4" styleClass="tableLeft"
rowClasses="row1,row2" rows="10" value="#{formCarriBombolaiDettaglioInterventoBean.elencoErogazioni}" var="doc"
selectionMode="single">
<a4j:ajax event="selectionchange" execute="@this"/>
<a4j:ajax listener="#{carriBombolaiPMIBean.updateCheckboxErogazioneEvPub(doc)}" event="selectionchange"
render="dt2_documenti_a4, calcoli_preventivo_ev_pub, mod_preventivo, panel_preventivi"/>
...
问题是传递给方法 carriBombolaiPMIBean.updateCheckboxErogazioneEvPub(doc)
的变量 doc
为空。有人知道问题出在哪里吗?
您的 doc
变量仅在呈现(或遍历)table 行时才有意义,因为 selectionchange
事件是在 table 级别上触发的,它将为空。
您需要跟踪所选行并根据此从 table 中获取所选行:
<rich:extendedDataTable selection="#{carriBombolaiPMIBean.selection}" … >
…
private Collection<Object> selection;
private List<Item> selectionItems = new ArrayList<Item>();
public void selectionListener(AjaxBehaviorEvent event) {
AbstractExtendedDataTable dataTable = (AbstractExtendedDataTable) event.getComponent();
Object originalKey = dataTable.getRowKey();
selectionItems.clear();
for (Object selectionKey : selection) {
dataTable.setRowKey(selectionKey);
if (dataTable.isRowAvailable()) {
selectionItems.add((Item) dataTable.getRowData());
}
}
dataTable.setRowKey(originalKey);
}
有关完整示例,请参阅展示柜中的 row selection demo。