2013-02-14 25 views
6

satır seçiminden sütun dışla: p:dataTable ile ilgili bir sorunum var ve tek satır seçiminden bir sütun hariç.Primefaces: p: dataTable

Verilerim 4 sütunum var. FileId, fileName ve uploadDate öğelerini görüntülemek için ilk 3 gerekir. 4. sütunda, dosya işleme eylemini başlatan her satır için bir komut düğmesi vardır. Ayrıca, dosya ayrıntıları sayfasına giden satır seçimi (olayda ajax eylemiyle birlikte) var. Şimdi, satırın herhangi bir yerine tıkladığımda (düğme de dahil olmak üzere) ayrıntılar sayfasına gider.

benim geçerli kod var:

<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> 

Ve ayrıntılar sayfasını dosyaya gider yöntemi vardır: satır seçimden düğmesiyle sütunu çıkarmak için herhangi bir yolu var mı

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"); 
    } 
} 

? Sadece başka bir sayfaya gitmeden dosyayı işlemeye başlamak için ihtiyacım var.

+0

Hangi dosyada işlem yapıyorsunuz, bu bir db mi? –

+0

Txt dosyasını Spring Batch ile işlemeye başlar. – Rozart

+1

Bir satır tıklattığınızda, aşağıdaki dinleyiciyi çalıştıran dataTable üzerinde bir rowSelect Primefaces Ajax olayınız var: '" # {billingService.selectBillingFileRow} "' Yönlendirme veya yönlendirici olup olmadığını görmek için bu yönteme ait kodu arardım. sayfa. –

cevap

4

Sorunuma kısmi bir çözüm buldum. onClick olay meydana geldiğinde, rowSelect ajax eyleminin yürütülmesini engelledim.

Ben p:commandButton için bu satırı eklendi:

onclick="event.stopPropagation();" 

Ben düğmesi ile sütun üzerinde tıklama, ancak düğmenin üzerinde, hala rowSelect eylemi yürütür, çünkü kısmen çalışır söyledi.

+0

Başka bir ham seçenek, seçici olarak 'SelectEvent' kaynağını ('getComponent()') almak ve olayı tetikleyen bileşenin türüne bağlı olarak yöntem gövdesinin geri kalanını seçici olarak yürütmek olacaktır. – kolossus

İlgili konular