在我的datatable中,根据列“Délai Action”,当没有日期时,其他列必须是红色的。最后一列有一个黄色/橙色/红色的球图标,取决于日期。那么如何更新行,然后显示红色或不红色的列和对应的色球呢?
我尝试了不同的方法,比如:
<p:ajax event="cellEdit" listener="#{prospectionForm.enregistrer}" update="cmpTableMandats"/>
也可以在我的enregistrer()方法中使用:RequestContext.GetCurrentInstance().Update(Table.GetClientId(facesContext.GetCurrentInstance())+“:”+Event.GetRowIndex()+“:Objet”);
<p:dataTable id="cmpTableMandats" value="#{prospectionForm.listMandats}"
var="mandat" rows="50" rowKey="#{mandat.id}"
scrollable="true" scrollHeight="440"
editable="true" editMode="cell"
emptyMessage="#{msg['AucuneDonneeAAfficher']}"
paginator="true" paginatorPosition="bottom"
paginatorTemplate=" {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="50,100,200,300"
style="margin-top:20px">
<p:ajax event="cellEdit" listener="#{prospectionForm.enregistrerModification}" update=""/>
<p:column headerText="#{msg['Numero']}" style="width:12%">
<h:outputText value="#{mandat.numero}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}"/>
</p:column>
<p:column headerText="#{msg['AbregeDirecteur']}" style="width:4%">
<h:outputText value="#{mandat.coordinateur.initiales}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}"/>
</p:column>
<p:column headerText="#{msg['AbregeChefDeProjet']}" style="width:4%">
<h:outputText value="#{mandat.chefProjet.initiales}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}"/>
</p:column>
<!-- Affiche la localité pré-enregistrée ou la localité libre -->
<p:column headerText="#{msg['Localite']}" style="width:15%">
<h:outputText value="#{mandat.listMandatLocaliteToString}"
rendered="#{not empty mandat.listMandatLocalite}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}"/>
<h:outputText value="#{mandat.localiteLibre}"
rendered="#{not empty mandat.localiteLibre}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}"/>
</p:column>
<p:column headerText="#{msg['AbregeMaitreOuvrage']}" style="width:20%">
<h:outputText value="#{mandat.listMandatIdentiteToString}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}"/>
</p:column>
<p:column headerText="#{msg['Objet']}" style="width:30%">
<h:outputText id="objet" value="#{mandat.objet}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}"/>
</p:column>
<p:column headerText="#{msg['CHF']}" style="width:10%; text-align:right">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{mandat.montantHonorairesFrais}" rendered="#{mandat.montantHonorairesFrais != 0.0}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}">
<f:convertNumber pattern="#,##0.00" locale="fr_CH"/>
</h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText value="#{mandat.montantHonorairesFrais}"
converterMessage="Cannot convert to double.">
<f:convertNumber pattern="#,##0.00" locale="fr_CH"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="#{msg['EtapeActuelle']}" style="width:13%">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{mandat.fluxProspectionCi.nom}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}"/>
</f:facet>
<f:facet name="input">
<p:selectOneMenu value="#{mandat.fluxProspectionCi}">
<f:selectItems value="#{prospectionForm.listFluxProspection}"/>
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="#{msg['Remarque']}" style="width:30%">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{mandat.remarqueProspection}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}"/>
</f:facet>
<f:facet name="input">
<p:inputTextarea value="#{mandat.remarqueProspection}"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column id="cmpDateAction" headerText="#{msg['Delai']} #{msg['Action']}" style="width:10%">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{mandat.dateActionProspection}" styleClass="#{(mandat.fluxProspectionCi eq 'ETABLIR_OFFRE' or mandat.fluxProspectionCi eq 'A_RELANCER') and mandat.dateActionProspection == null ? 'red' : null}">
<f:convertDateTime pattern="dd.MM.yy"/>
</h:outputText>
</f:facet>
<f:facet name="input">
<p:calendar id="cmpDate"
value="#{mandat.dateActionProspection}" showOn="true"
pattern="dd.MM.yyyy" mask="true" locale="fr" styleClass="myInputClass">
</p:calendar>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="" style="width:10%;">
<h:graphicImage id="un" rendered="#{mandat.dateProspectionDepassee}" value="/resources/images/icones/rwb/ball_red.png"/>
<h:graphicImage id="deux" rendered="#{mandat.dateProspectionAujourdhui}" value="/resources/images/icones/rwb/ball_orange.png"/>
<h:graphicImage id="trois" rendered="#{not mandat.dateProspectionDepassee and not mandat.dateProspectionAujourdhui and mandat.dateProspectionDans5JoursouMoins}" value="/resources/images/icones/rwb/ball_yellow.png"/>
</p:column>
<f:facet name="footer">
#{fn:length(prospectionForm.listMandats)} #{msg['MandatsEnregistres']}
</f:facet>
</p:dataTable>`
提前致谢
Primefaces 6.0/JSF 2.3
请使用p:remoteCommand
@balusc可以在这个答案中找到解释
有关p:remoteCommand
的更多信息,请参阅Primefaces showcase remoteCommand。
我有一个带有单元格编辑功能的数据表,我想通过应用一个不同样式的类来更新数据表以显示修改后的记录。 以下是我的问题: 如果在激发onCellEdit事件时未更新数据表,则记录已正确更新,但无法看到已修改行的applyed style类。 如果在onCellEdit事件激发时更新数据表,并使用return键更新值,则一切正常,并且可以看到修改行的应用样式类。 如果我在单元格编辑事件触发时更新数据表,并
我有一个带有单元格编辑的primefaces datatable,它可以在视图中的一个布尔变量上切换。 我有三个问题: 在编辑模式下,我更改了一个值,然后单击页面上的“保存”按钮,它不会保留新值,如果我先单击页面上的任何其他位置,然后单击“保存”,它将保留该值。如果您先单击“保存”,我需要它来保留值。 如果我编辑了一个输入文本的单元格,然后我单击了它,那么该字段现在就是一个输出文本,直到我再次单击
问题内容: 你们真是太棒了,为我在最后一个问题上指明了正确的方向,我在这里对我原来的问题进行了扩展: 如何将JTable列设置为String并排序为Double? 由于现在我使用自定义单元格渲染器将价格列的格式设置为$ ###,## 0.00,因此我现在还为该单元格设置了JTextField编辑器。单元格的编辑工作正常,除了更新值时,自定义渲染器中设置的数字格式似乎不再格式化单元格(在提交编辑后,
我在这个JTable上有问题。我这样编辑单元格 然后,我按Enter键提交更改。在这里,我希望gui用新的值刷新表。 但它们不显示,只有当我像这样更改选择时它们才显示 这是在TableModel中调用的。
问题内容: 我想使用jqGrid 双击 打开一个单元格编辑器,因此我的代码包括以下部分: 可以正常工作,但是当用户单击edit元素之外或按 ESC , TAB , ENTER 等时,我不知道如何(自动)关闭单元格编辑器。 问题答案: 问题是您尝试在不支持的双击上执行单元格编辑。您当前的代码不能工作,因为如果用户按,或键,,或将真的叫,但是这些方法测试是否内部参数。 为了展示如何解决该问题,我创建了
我用这个例子http://docs.oracle.com/javafx/2/ui_controls/table-view.htm其中tableview基于MapValueFactory。 现在我遇到了编辑后的值不保存的情况。我的行动: 按“回车”- 但当我在这个单元格中再次按“回车”时,会显示旧值而不是新值。 请帮助我了解编辑单元格后如何保存更改?