Primefaces数据表选择多个使用ajax事件没有调用方法

时间:2015-05-29 07:50:49

标签: ajax primefaces datatable selection lazydatamodel

我想在Lazy Data Model上使用ajax事件rowSelectCheckBox调用一个监听器 选中multiple。我在我的支持bean中创建了一个方法,但是没有调用此方法。

任何人都可以帮忙解决这个问题吗?

我的xhtml:

<h:form id="frmDataTableMutasi">
<p:outputLabel value="Daftar Toko Akan Dimutasi"
    styleClass="outputlabel-title" />
<br />
<p:dataTable widgetVar="widgetDataModel" var="dataModel"
    id="dataTable" value="#{tokoListBean.lfaStoreDataModel}" lazy="true"
    paginator="true" rows="5" paginatorPosition="bottom"
    emptyMessage="No record found"
    selection="#{tokoListBean.selectedLfaStore}"
    selectionMode="multiple"
    currentPageReportTemplate="{currentPage}/{totalPages}"
    paginatorTemplate="{FirstPageLink} {PreviousPageLink}      {CurrentPageReport} {NextPageLink} {LastPageLink}"
    rowsPerPageTemplate="5,10,15">

    <p:ajax event="rowSelectCheckbox" 
        listener="#{tokoListBean.onRowSelect}" update=":frmBtn:btnMutasi" />
    <p:ajax event="rowUnselectCheckbox"
        listener="#{tokoListBean.onRowUnselect}" update=":frmBtn:btnMutasi" />

    <p:column selectionMode="multiple"
        style="width:16px;text-align:center" />

    <p:column>
        <h:outputText value="#{dataModel.storeCode}" />
    </p:column>
    <p:column>
        <h:outputText value="#{dataModel.storeName}" />
    </p:column>
    <p:column>
        <h:outputText value="#{dataModel.snStoreType}" />
    </p:column>

    </p:dataTable>

我的支持bean:

public void onRowSelect(SelectEvent event) {
    System.out.println("onRowSelect");
    this.enableBtnMutasi = false;
}

public void onRowUnselect(UnselectEvent event) {
    System.out.println("onRowUnselect");
    this.enableBtnMutasi = true;
}

2 个答案:

答案 0 :(得分:1)

尝试删除数据表的选择标记

 <p:dataTable widgetVar="widgetDataModel" var="dataModel"
    id="dataTable" value="#{tokoListBean.lfaStoreDataModel}" lazy="true"
    paginator="true" rows="5" paginatorPosition="bottom"
    emptyMessage="No record found"
    selection="#{tokoListBean.selectedLfaStore}"

    currentPageReportTemplate="{currentPage}/{totalPages}"
    paginatorTemplate="{FirstPageLink} {PreviousPageLink}{CurrentPageReport} {NextPageLink} {LastPageLink}"
    rowsPerPageTemplate="5,10,15">

 <p:ajax event="rowSelectCheckbox" 
        listener="#{tokoListBean.onRowSelect}" update=":frmBtn:btnMutasi" />
    <p:ajax event="rowUnselectCheckbox"
        listener="#{tokoListBean.onRowUnselect}" update=":frmBtn:btnMutasi" />

    <p:column selectionMode="multiple"
        style="width:16px;text-align:center" />
    enter code here
    // othres columns

   </datatable>

答案 1 :(得分:1)

尝试删除widgetVar =“widgetDataModel”

并添加以下代码:

<p:ajax event="toggleSelect" listener="#{tokoListBean.onRowToggle()}" update=":frmBtn:btnMutasi"/>          
<p:ajax event="rowSelectCheckbox" listener="#{tokoListBean.onRowSelect}" update=":frmBtn:btnMutasi"/>          
<p:ajax event="rowUnselectCheckbox" listener="#{tokoListBean.onRowUnselect}" update=":frmBtn:btnMutasi"/>          
<p:ajax event="rowSelect" listener="#{tokoListBean.onRowSelect}" update=":frmBtn:btnMutasi"/>          
<p:ajax event="rowUnselect" listener="#{tokoListBean.onRowUnselect}" update=":frmBtn:btnMutasi"/>