我在rowExpansion中有selectOneMenu和inputText。每当我解开并重新转换特定行或切换到另一行时,selectOneMenu中的值将重置为我的noSelectOption,但我的inputText值仍保留在那里。
我在Primefaces 6.0上运行。
<p:dataTable id="idTableItemList" value="#{bean.itemList}" var="vo" rowKey="#{row}" rowIndexVar="row" rowExpandMode="single">
<p:ajax event="rowToggle" listener="#{bean.onRowToggle}" global="false"
update=":idForm:idTableItemList:idTablePackage" />
<p:column>
<p:rowToggler></p:rowToggler>
</p:column>
<p:rowExpansion>
<p:dataTable id="idTablePackage" value="#{vo.packageList}" var="voSub" rowKey="#{row}"
rowIndexVar="rowIndex">
<p:column headerText="Package Type" style="width:100px;">
<p:selectOneMenu id="idPackage"
value="#{voSub.packageType}">
<f:selectItem itemLabel="Select One" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{bean.packageUDCList}"
var="udc" itemLabel="#{udc.description}" itemValue="#{udc.code}"/>
<p:ajax update="idPackage" event="change" listener="#{bean.updateItemPackage(vo, voSub)}" global="false"/>
</p:selectOneMenu>
</p:column>
<p:column headerText="Quantity" style="width:40px;">
<p:inputNumber id="idQuantity" value="#{voSub.quantity}"/>
</p:column>
</p:dataTable>
</p:rowExpansion>
</p:dataTable>
我将rowToggle更新为下面的代码,但仍然没有运气。
<p:ajax event="rowToggle" listener=“#{bean.onRowToggle}" global="false"
disabled=“#{bean.itemList.size() eq 0}"
process=":idForm:idTableItemList:#{bean.rowIndex}:idTablePackage"
update=":idForm:idTableItemList:#{bean.rowIndex}:idTablePackage"/>
答案 0 :(得分:0)
发生此问题是因为rowExansion中的数据未发送到服务器,因此在服务器端数据将是旧的
当您点击切换按钮时,该行将被删除,而不是设置为隐藏
你可以通过解决问题 1 - 在
添加<h:link>
<p:column>
<p:rowToggler></p:rowToggler>
<h:link onclick="makeRowHidden()"/>
</p:column>
2-给h:link一个图标
3-使rowToggler图标隐藏
如果您需要更多详细信息,请说明,我会更新我的答案