7

p:dataTable単一行の選択から列を除外することに問題があります。

dataTableに4つの列があります。fileId、fileName、uploadDateを表示するには、最初の3つが必要です。4列目には、ファイル処理のアクションを開始する各行のコマンドボタンがあります。ただし、ファイルの詳細ページに移動する行の選択(イベントでのajaxアクションを使用)もあります。これで、行の任意の場所(ボタンを含む)をクリックすると、詳細ページに移動します。

私の現在のコードがあります:

<h:form>
    <p:dataTable id="billingFiles" value="#{billingFiles}"
        var="billingFile"
        rowKey="#{billingFile.billingFile.idBillingFile}"
        filteredValue="#{billingService.filteredBillingFileDataModels}"
        selectionMode="single" paginator="true" rows="10">

        <p:ajax event="rowSelect" listener="#{billingService.selectBillingFileRow}" />

        <p:column sortBy="#{billingFile.id}"
            filterBy="#{billingFile.id}" id="idFile"
            headerText="#{msg['billing.file.id']}"
            filterMatchMode="contains">
            <h:outputText value="#{billingFile.id}" />
        </p:column>

        <p:column sortBy="#{billingFile.uploadDate}"
            filterBy="#{billingFile.uploadDate}" id="uploadDate"
            headerText="#{msg['billing.file.upload_date']}"
            filterMatchMode="contains">
            <h:outputText value="#{billingFile.uploadDate}" />
        </p:column>

        <p:column sortBy="#{billingFile.fileName}"
            filterBy="#{billingFile.fileName}" id="fileName"
            headerText="#{msg['billing.file.file_name']}"
            filterMatchMode="contains">
            <h:outputText value="#{billingFile.fileName}" />
        </p:column>

        <p:column id="loadBillingFile">
            <p:commandButton id="loadBillingFileButton"
                rendered="#{billingFile.fileStatus.equals('UPLOADED')}"
                value="#{msg['billing.load_billing_file']}"
                action="#{billingService.loadBillingFile(billingFile.billingFile)}"
                update=":form" />
        </p:column>
    </p:dataTable>
</h:form>

そして、ファイルの詳細ページに移動する方法があります:

public void selectBillingFileRow(SelectEvent event) {
    BillingFileDataModel billingFileDataModel = (BillingFileDataModel) event.getObject();
    if (billingFileDataModel != null) {
        selectedBillingFile = billingFileDAO.findBillingFileById(billingFileDataModel.getBillingFile().getIdBillingFile());
        FacesContext.getCurrentInstance().getExternalContext()
        .getRequestMap().put(JsfView.EVENT_KEY, "viewBillingFile");
    }
}

ボタンのある列を行選択から除外する方法はありますか?他のページに移動せずに、ファイルの処理を開始するためだけに必要です。

4

1 に答える 1

6

私は自分の問題の部分的な解決策を見つけました。イベントが発生rowSelectしたときにajaxアクションが実行されないようにしました。onClick

私はこの行をに追加しましたp:commandButton

onclick="event.stopPropagation();"

ボタンのある列をクリックしても、ボタン自体は実行されないため、部分的に機能すると言いましたrowSelect

于 2013-02-15T11:34:33.047 に答える