【问题标题】:Data Table row selection(single) in Primefaces 3.5 selects all rowsPrimefaces 3.5中的数据表行选择(单个)选择所有行
【发布时间】:2014-05-30 08:57:37
【问题描述】:

我需要在 DataTable 中添加和删除行,并使用按钮通过单选分别添加和删除行。

我的 html/jsf 代码是:

<p:dataTable id="creditTable" rowIndexVar="sn" 
                                value="#{cpeTrainingMB.cpeTrainingObj.cpeTrainigSchDetail}"
                                var="cpeDetail" scrollable="true" scrollHeight="100" 
                                selectionMode="single" 
                                rowKey="#{cpeDetail.id}">

                                <p:ajax event="rowSelect" update=":cpe:creditTable" listener="#{cpeTrainingMB.onRowSelect}"/>

                                    <p:column headerText="Sn">
                                    <h:outputText value="#{sn+1}"></h:outputText>
                                    </p:column>
                                    <p:column headerText="Date">
                                    <h:outputText value="#{cpeDetail.fromDtBS}"></h:outputText> 
                                    </p:column>
                                    <p:column headerText="Credit HR">
                                    <h:outputText value="#{cpeDetail.creditHr}"></h:outputText>
                                    </p:column>
                                </p:dataTable>

问题是当我添加多个数据,然后选择要删除的行时,它会一次选择所有行,这不是必需的。 它只适用于一行。

支持方法/功能如下:

public void onRowSelect(SelectEvent event){

        cpeScheSelected = null;
        this.cpeScheSelected = (CPETrainingScheduleModel)event.getObject();

        cpeTrainingScheObj = null;

        cpeTrainingScheObj = this.cpeScheSelected;

    }

【问题讨论】:

  • 你好,有人
  • 您确定添加到您的 dataTable 的所有对象的 id 都不为空吗?
  • 抱歉,我的所有 id 都为空。但是我的 id 将在保存到数据库时自动生成。因此,我为选择目的生成了 id。我想知道除了对象的字段之外是否有可能有一个行键?就像自动生成的显示器序列号一样。
  • 我会说它必须是对象的一个​​字段 - 至少我从未听说过。您始终可以实现 SelectableDataModel 而不是指定 rowKey - 但这需要更多编码。我认为生成 id 解决了问题?
  • 是的,通过生成 id 解决了。

标签: jsf jsf-2 primefaces


【解决方案1】:

dataTable 中列出的所有元素的 rowKey 属性(在本例中为 id 字段)必须具有非空值。空值将导致问题中描述的行为。指定 rowKey 的替代方法是使用自定义方法 public Object getRowKey(RowClass rc) 实现 SelectableDataModel。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 2015-07-10
    • 2015-07-06
    • 2017-10-07
    • 2017-10-02
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多