如何在Primefaces数据表中动态更新单元格

时间:2016-03-20 06:18:29

标签: jsf primefaces

我有一个场景就像我将在数据表中使用单元格编辑。 我有两个牢房 我的第一个Cell是可编辑的 需要通过对第一单元输入进行一些算术运算来显示第二单元值(例如:第二单元格值=(第一单元格值)*。14

我的代码就像

<p:dataTable id="cars2" var="car" value="#{dtEditView.cars2}" editable="true" editMode="cell" widgetVar="cellCars">.

<p:ajax event="cellEdit" listener="#{dtEditView.onCellEdit}" update=":form:msgs" />

       <p:column headerText="Cell 1">
              <p:cellEditor>
                  <f:facet name="output"><h:outputText value="#{car.id}" /></f:facet>
                  <f:facet name="input"><p:inputText id="modelInput" value="#{car.id}" style="width:96%"/>
<p:ajax event="keyup" listener="#{car.yearupdate}" update="2:3"></p:ajax></f:facet>
              </p:cellEditor>
          </p:column>
          <p:column id="2" headerText="Cell 2">

               <f:facet name="output"><h:outputText id="3" value="#{car.year}" /></f:facet>

       </p:column>

</p:dataTable>

我想知道用于监听器方法代码的Java代码来更新第二个单元格值

1 个答案:

答案 0 :(得分:0)

在xhtml中我们需要调用监听器(p:ajax标签)。

bean中的

批量更新其他列数据(遍历所有搜索记录并更新所有recs的corressponding值)。  像

这样的xhtml代码

dependencies {

    compile 'com.gluonhq:charm:4.1.0'
    compile 'com.airhacks:afterburner.mfx:1.6.3'

    compileNoRetrolambda 'com.caucho:hessian:4.0.7'
    compileNoRetrolambda 'com.google.code.gson:gson:2.3.1'
    compileNoRetrolambda 'org.apache.poi:poi:3.9'
}

jfxmobile {
    downConfig {
        version '3.0.0'
        plugins 'display', 'lifecycle', 'statusbar', 'storage', 'connectivity'
    }

    android {
        manifest = 'src/android/AndroidManifest.xml'
    }
    ios {

        infoPList = file('src/ios/Default-Info.plist')
        forceLinkClasses = [
            'com.caucho.**.*', 
            'com.woanna.**.*', 
            'com.gluonhq.**.*', 
            'io.datafx.**.*', 
            'javax.annotations.**.*', 
            'javax.inject.**.*', 
            'javax.json.**.*', 
            'javax.naming.**.*', 
            'org.glassfish.json.**.*', 
            'com.google.code.gson.**.*', 
            'org.apache.poi.**.*'
        ]
    }
}

在Bean

public void valueUpdate(){

<p:dataTable id="listDetails" value="${managedBean.searchList}" var="row">
  
  <p:ajax event="rowEdit" listener="#{managedBean.onRowEdit}"
								update=":managedBean:messages" />
<p:ajax event="rowEditCancel" listener="#{managedBean.onRowCancel}" update=":managedBean:messages" />
  
  <p:column priority="17"
								headerText="col 1"
								styleClass="wrap text-right" style="width: 140px;">
								<p:cellEditor>
									<f:facet name="output">
										<h:outputText value="#{row.val1}" />
									</f:facet>
									<f:facet name="input">
										<p:inputText id="modelInput" value="#{row.val1}"
											<p:ajax event="blur" listener="#{managed.valueUpdate}"
												update="tempValue></p:ajax>
										</p:inputText>
									</f:facet>
								</p:cellEditor>
							</p:column>

<p:column priority="2"	headerText="Col 2"	exportable="true">
	<p:cellEditor>
		<f:facet name="output">
			<h:outputText id="value" value="#{row.value}" />
		</f:facet>
		<f:facet name="input">
			<h:outputText id="tempValue" value="#{row.tempValue}" />
		</f:facet>
	</p:cellEditor>
</p:column>

    							

}