2012-05-12 92 views
3

我有一個數據表編輯器,它可以正確顯示記錄,但是當我嘗試編輯一行時,變化沒有反映出來。以下是XHTML代碼:primefaces 3.2 datatable incell編輯不起作用

<p:cellEditor> 
      <f:facet name="output"> 
       <h:outputText value="#{scrip.companyName}"/> 
      </f:facet> 
      <f:facet name="input"> 
       <p:inputText value="#{scrip.companyName}"/> 
      </f:facet> 
      </p:cellEditor> 
     </p:column> 
      <p:column headerText="Exchange"> 
      <p:cellEditor> 
      <f:facet name="output"> 
       <h:outputText value="#{scrip.exchange}"/> 
      </f:facet> 
       <f:facet name="input"> 
      <p:selectOneMenu style="width: 150px" value="#{manageScrip.exchange}"> 
       <f:selectItem itemLabel="nse" itemValue="nse"/> 
       <f:selectItem itemLabel="bse" itemValue="bse"/>       
      </p:selectOneMenu> 
        </f:facet> 
     </p:cellEditor> 
     </p:column> 
      <p:column headerText="Brokerage Charge"> 
      <p:cellEditor> 
      <f:facet name="output"> 
      <h:outputText value="#{scrip.brokerageCharge}"/> 
      </f:facet> 
      <f:facet name="input"> 
      <p:inputText value="#{scrip.brokerageCharge}"/> 
      </f:facet> 
     </p:cellEditor> 
     </p:column> 

      <p:column headerText="Options"> 
       <p:rowEditor/> 

     </p:column> 

    </p:dataTable> 

    </h:form> 
</h:body> 

以下是管理bean功能:

public void updateScrip() 
{ 
    try{ 
     Integer i=(Integer)dt.getRowKey(); 
     String str=i.toString(); 
     sc=(ScripMaster) dt.getRowData(str); 

     scripSymbol=sc.getScripSymbol(); 
     exchange=sc.getExchange(); 
     companyName=sc.getCompanyName(); 


     updateScrip(i, scripSymbol, companyName, exchange,); 

     }catch(Exception ex){ 

     } 
} 

另外我也試過:

public void updateScrip(RowEditEvent e) 
{ 
    try{ 
     sc=(ScripMaster) e.getObject(); 
     scripSymbol=sc.getScripSymbol(); 
     exchange=sc.getExchange(); 
     companyName=sc.getCompanyName(); 
     Integer i=sc.getScripID(); 
     updateScrip(i, scripSymbol, companyName, exchange); 
     }catch(Exception ex){ 
     } 
} 

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 
<h:head> 
    <title>Facelet Title</title> 
</h:head> 
<h:body> 
    <h:form id="frm"> 
     <p:commandLink action="/adminpages/addScrip" value="add scrip" ajax="false"/> 
     <p:dataTable editable="true" var="scrip" value="#{manageScrip.scripList}" binding="#{manageScrip.dt}" rowKey="#{scrip.scripID}" id="dt"> 
      <p:ajax event="rowEdit" listener="#{manageScrip.updateScrip}" update="@this"/> 
      <p:column headerText="Scrip Symbol"> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{scrip.scripSymbol}"/> 
        </f:facet> 
        <f:facet name="input"> 
         <p:inputText value="#{scrip.scripSymbol}"/> 
        </f:facet> 
       </p:cellEditor> 
      </p:column> 

      <p:column headerText="Company Name"> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{scrip.companyName}"/> 
        </f:facet> 
        <f:facet name="input"> 
         <p:inputText value="#{scrip.companyName}"/> 
        </f:facet> 
       </p:cellEditor> 
      </p:column> 
      <p:column headerText="Exchange"> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{scrip.exchange}"/> 
        </f:facet> 
        <f:facet name="input"> 
         <p:selectOneMenu style="width: 150px" value="#{manageScrip.exchange}"> 
          <f:selectItem itemLabel="nse" itemValue="nse"/> 
          <f:selectItem itemLabel="bse" itemValue="bse"/>       
         </p:selectOneMenu> 
        </f:facet> 
       </p:cellEditor> 
      </p:column> 
      <p:column headerText="Brokerage Charge"> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{scrip.brokerageCharge}"/> 
        </f:facet> 
        <f:facet name="input"> 
         <p:inputText value="#{scrip.brokerageCharge}"/> 
        </f:facet> 
       </p:cellEditor> 
      </p:column> 

      <p:column headerText="Options"> 
       <p:rowEditor/> 
      </p:column> 
     </p:dataTable> 
    </h:form> 
</h:body> 

+0

嘗試使用螢火蟲編輯後檢查部分響應。 – Fallup

+0

我檢查了部分響應...輸入框包含之前(編輯前的值)值... – z22

+0

這很奇怪,它不應該。將''添加到您的.xhtml以檢查錯誤。 – Fallup

回答

1

最重要的部分是缺少數據表標籤。

確保「可編輯」屬性設置爲true。這個屬性是在3.2版本中發明的,我認爲這使得很多onld數據表不可編輯。

+0

仍然是同樣的問題...在可編輯的文本框中更改的值未設置...它採用以前的值... – z22

+0

其中我錯了嗎? – z22

0

嘗試使用h:inputText而不是p:inputText

相關問題