2012-04-27 93 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 -->