我正在构建一个visualforce页面,其中有一个带有几个列的顶点:datatable。
现在,我希望只有当它的值不是null和>0时,才能显示列“D折”。
我的守则如下:
<apex:dataTable width="100%" value="{!Opportunity.OpportunityLineItems}" var="oli">
<apex:column width="50%" headerClass="tableheaderleft" styleClass="tablebodyleft">
<apex:facet name="header">Bezeichnung</apex:facet>
<apex:OutputField value="{!oli.Name}"/>
</apex:column>
<apex:column width="{!If(oli.Discount!=null,If((oli.Discount>0),"10%","10%"),"10%")}" headerClass="tableheadercenter" footerClass="tablefootercenter" styleClass="tablebodycenter">
<apex:facet name="header">Anzahl</apex:facet>
<apex:OutputField value="{!oli.Quantity}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
<apex:column width="20%" headerClass="tableheaderright" styleClass="tablebodyright">
<apex:facet name="header">Einzelbetrag</apex:facet>
<apex:OutputField value="{!oli.UnitPrice}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
<apex:column rendered="{!If(oli.Discount!=null,(oli.Discount>0),false)}" headerClass="tableheadercenter" footerClass="tablefootercenter" styleClass="tablebodycenter">
<apex:facet name="header">Rabatt</apex:facet>
<apex:OutputField value="{!oli.Discount}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
<apex:column width="20%" headerClass="tableheaderright" styleClass="tablebodyright">
<apex:facet name="header">Gesamtbetrag</apex:facet>
<apex:OutputField value="{!oli.TotalPrice}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>
</apex:dataTable>但我总是得到以下例外:
core.apexpages.exceptions.ApexPagesDeveloperException: javax.faces.FacesException:操作符'>‘>的不正确的论证类型.
有人知道为什么会出现这种异常吗?是否会因为折扣返回百分比值而发生?
非常感谢!
发布于 2020-08-08 16:53:10
您在注释中澄清了“如果至少有一行有值,只想显示整个列”。
您有从Opp项目到Opp项目的折扣相关汇总总结字段吗?你可以做一些像rendered="{!Opportunity.DiscountLinesCount__c > 0}"或{!Opportunity.TotalDiscount__c > 0}这样的事情。
如果您有顶点控制器(或扩展),您可以检查行并设置一些布尔标志,然后基于此进行渲染。这是官方的方式。
非正式地,您可以在dataTable之前遍历行项,滥用<apex:variable>标记。它有点黑,但它没有任何顶点就能工作。检查我对这个问题的答案:https://salesforce.stackexchange.com/q/193169/799
就像这样。并没有试图运行它,但应该给你的想法。
<apex:variable var="hasDiscountLines" value="{!false}" />
<apex:repeat value="{!Opportunity.OpportunityLineItems}" var="oli">
<apex:variable var="hasDiscountLines" value="{!hasDiscountLines || oli.Discount != null}" />
</apex:repeat>
(...)
<apex:dataTable width="100%" value="{!Opportunity.OpportunityLineItems}" var="oli">
<apex:column rendered="{!hasDiscountLines}">
(...)
</apex:dataTable>发布于 2020-08-07 13:58:59
在双quotes.You中有双引号,可以用单引号代替。
例如。
<apex:column width="{!If(oli.Discount!=null,If((oli.Discount>0),'10%','10%'),'10%')}" headerClass="tableheadercenter" footerClass="tablefootercenter" styleClass="tablebodycenter">
<apex:facet name="header">Anzahl</apex:facet>
<apex:OutputField value="{!oli.Quantity}"/>
<apex:facet name="footer"></apex:facet>
</apex:column>独立的例子-
<apex:page>
<canvas id="myCanvas" width="{! if(true == true, '300%', '200%') }" height="300" style="border:1px solid">
Your browser does not support the HTML5 canvas tag.
</canvas>
</apex:page>https://stackoverflow.com/questions/63302083
复制相似问题