【问题标题】:Problem with row selection in extendedDataTable扩展数据表中的行选择问题
【发布时间】:2019-06-13 13:44:53
【问题描述】:

我对 Richfaces 中的扩展数据表有疑问。我正在尝试在扩展数据表中选择一行,并且选择有效。这是我正在使用的一些代码。

...
    <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"/>
    ...

问题是变量doc,在传递给方法carriBombolaiPMIBean.updateCheckboxErogazioneEvPub(doc) 时为空。有人知道可能是什么问题吗?

【问题讨论】:

    标签: datatable richfaces selection


    【解决方案1】:

    您的doc 变量仅在呈现(或遍历)表行时才有意义,因为selectionchange 事件在表级别触发,它将为空。

    您需要跟踪选定的行并据此从表中获取选定的行:

    <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

    【讨论】:

      猜你喜欢
      • 2011-11-19
      • 2012-06-11
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2020-03-15
      • 2011-07-01
      • 2011-06-15
      • 1970-01-01
      相关资源
      最近更新 更多