首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visualforce:只有当值不是空时才呈现异常

Visualforce:只有当值不是空时才呈现异常
EN

Stack Overflow用户
提问于 2020-08-07 12:39:41
回答 2查看 3.1K关注 0票数 1

我正在构建一个visualforce页面,其中有一个带有几个列的顶点:datatable。

现在,我希望只有当它的值不是null和>0时,才能显示列“D折”。

我的守则如下:

代码语言:javascript
复制
<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:操作符'>‘>的不正确的论证类型.

有人知道为什么会出现这种异常吗?是否会因为折扣返回百分比值而发生?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

就像这样。并没有试图运行它,但应该给你的想法。

代码语言:javascript
复制
<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>
票数 1
EN

Stack Overflow用户

发布于 2020-08-07 13:58:59

在双quotes.You中有双引号,可以用单引号代替。

例如。

代码语言:javascript
复制
<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>

独立的例子-

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63302083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档