簡體   English   中英

多 select 的 p:dataTable rowSelect 事件不會觸發

[英]p:dataTable rowSelect event with multi select doesn't fire

我有 p:datatable 作為

 <p:dataTable id="tasktable" rows="5"  paginator="true" paginatorPosition="bottom" rowsPerPageTemplate="5,10,25" editable="true" editMode="row" reflow="true"
         value="#{taskBean.taskList}" selectionMode="multiple" binding="#{table}" rowKey="#{currentrow[0]}" selection="#{taskBean.selectedTaskList}" var="currentrow"}">

<p:column headerText="Select" id="checkboxSelect" selectionMode="multiple" styleClass='text-md-center com-wdth-5 white'>

</p:column>

<f:facet name="header">
    <div>
        <p:commandButton id="toggler" type="button" value="Select Columns" icon="ui-icon-calculator" styleClass="btn ad-btn-danger padd mr-b0"/>
        <p:columnToggler datasource="tasktable" trigger="toggler" />
    </div>
</f:facet>
<p:column id="sno" styleClass="com-wdth-5">
    <f:facet name="header"> #{msg['CHSN']} </f:facet> 
    <h:outputLabel value="#{table.rowIndex + 1}"/>  
</p:column>
.
.
.
 <p:ajax event="rowSelect" listener="#{taskBean.onRowSelect}" update="@form"/>
</p:dataTable>

使用event="rowSelect"和 selectionMode 多個,使用支持 bean 代碼作為

public void onRowSelect(SelectEvent event) {

    System.out.println("selectedTaskList = "+selectedTaskList.size());
}

但是這個 rowSelect永遠不會被觸發並且復選框不是selectable ,但是如果我從 p:dataTable中刪除selectionMode="multiple" ,選擇啟用但仍然不會觸發事件。 而 selectedTaskList 只是一個 arrayList 全局定義為: private List selectedTaskList = new ArrayList<>();

我錯過了其他 p:dataTable 事件。 我使用這些事件對其進行了糾正

<p:ajax event="rowSelect" listener="#{taskBean.onRowSelect}" update="@this taskToolbar" />
<p:ajax event="rowUnselect" listener="#{taskBean.onRowUnselect}" update="@this taskToolbar" />
<p:ajax event="rowSelectCheckbox" listener="#{taskBean.onRowSelect}" update="@this taskToolbar" />
<p:ajax event="rowUnselectCheckbox" listener="#{taskBean.onRowUnselect}" update="@this taskToolbar" />
<p:ajax event="toggleSelect" process="@this" update="@this taskToolbar" listener="#{taskBean.onAllRowSelect}"/>

還有我的支持 Bean 代碼

public void onRowSelect(SelectEvent event) {
        displayTag();
    }

    public void onRowUnselect(UnselectEvent event) {
        displayTag();
    }

    public void onAllRowSelect(AjaxBehaviorEvent event) {
        displayTag();
    }

    public void displayTag() {
        if (selectedTaskList != null && !selectedTaskList.isEmpty()) {
            hideTag = true;
        } else {
            hideTag = false;
        }
    }

其中 selectedTaskList 是我保存選定表行的列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM