2012-04-27 96 views
1

我完全不同意这个,任务已经被抛到了我的头上,我从来没有做过这样的事情。我一直在考虑包含大致是这样的一个模板:如何在Visualforce中执行复杂的IF语句?

 <apex:column headervalue="Amount"><c2g:CODAFormatterController number="{!IF([some condition],[something],[something else])}"/></apex:column> 

我换成条件/某事/别的

有使用功能你会在JavaScript做一个方法的语句,所以像

number =“getNumber(x);”

或者我必须以某种方式链接一些IF语句?有没有IF ... ELSE?

我不知道CODAFormatterController是什么,因为它在google上返回了0个结果。

任何建议都会有帮助,恐怕我已经在这里深陷其中!

回答

2

VForce内联功能,它们必须最终返回一个值,是一个简单的值或一个服务器端代码的调用点。他们不支持命令式编码,并且正在解决服务器端(早在JS进场之前)。在这方面IF(condition,valuetrue,valuefalse)是相当于IF .. THEN..ELSE..ENDIF

你是自由链接任何数量的函数提供没有类型不匹配,这意味着你的valuetrue本身可以是一个函数,包括作为一个IF函数本身。

通常,当人们遇到这类问题时,总会有一种解决方法是使用稍微不同的方法。这一切都取决于你在这里试图做什么......

+0

最后我做了一个非常复杂的'IF(X,Y,IF(X,Y,IF(X,YZ)))',但它是丑陋的,因为它是所有一致。 – NibblyPig 2012-04-27 12:58:25

2

我偶然在Visualforce页面上做了一些工作时偶然发现了这个问题。无论如何,如果有人看到这个问题,他们应该知道不需要使用复杂的嵌套IF语句,现在Salesforce中有一个CASE函数可用。

文档 - https://developer.salesforce.com/docs/atlas.en-us.198.0.pages.meta/pages/pages_variables_functions.htm

{!CASE(Opportunity.StageName, 
      "Prospecting", "1", 
      "Needs Analysis", "2", 
      "Proposal/Price Quote", "3", 
      "default val")} <!-- the last one returns if none of the previous results matched -->