- Visualforce Development Cookbook(Second Edition)
- Keir Bowden
- 411字
- 2021-07-14 10:08:36
Data-driven styling
A useful technique when creating a custom user interface with Visualforce is to conditionally style important pieces of information to draw the user's attention to them as soon as a page is rendered.
Most Visualforce developers are familiar with using merge
fields to provide sObject
field values to output tags, or to decide if a section of a page should be rendered. In the tag shown next, the merge
field, {!account.Name}
, will be replaced with the contents of the Name
field from the account sObject
:
<apex:outputField value="{!account.Name}"/>
The merge
fields can also contain formula operators and be used to dynamically style data when it is displayed.
In this recipe, we will display a table of campaign records and style the campaign cost in green if it was within-budget, or red if it was over-budget.
How to do it...
- Navigate to the Visualforce setup page by clicking on Your Name|Setup|Develop|Visualforce Pages.
- Click on the New button.
- Enter
ConditionalColour
in the Label field. - Accept the default ConditionalColour that is automatically generated for the Name field.
- Paste the contents of the
ConditionalColour.page
file from the code download into the Visualforce Markup area and click on the Save button. - Navigate to the Visualforce setup page by clicking on Your Name|Setup|Develop|Visualforce Pages.
- Locate the entry for the ConditionalColour page and click on the Security link.
- On the resulting page, select which profiles should have access and click on the Save button.
How it works...
Opening the following URL in your browser displays the ConditionalColour page: https://<instance>/apex/ConditionalColour
. Here, <instance>
is the Salesforce instance specific to your organization, for example, na6.salesforce.com
.
A list of campaigns is displayed, with the campaign cost rendered in red or green depending on whether it came in on- or over-budget:

The page makes use of a standard list controller by defining the recordSetVar
attribute on the <apex:page />
standard component:
<apex:page StandardController="Campaign" recordSetVar="Campaigns">
Note
Standard list controllers allow a Visualforce page to manage a collection of records without the need for Apex code. The collection of records, by default, is from the last list view accessed by the user. Specifying the filterId
property in the page allows the records from a particular list view to be used.
For more information on standard list controllers, see: https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_controller_sosc_about.htm.
Conditional styling is applied to the Actual Cost column by comparing the actual cost with the budgeted cost.
<apex:column style="color: {!IF(AND(NOT(ISNULL(campaign.ActualCost)), campaign.ActualCost<=campaign.BudgetedCost), "lawngreen", "red")}" value="{!campaign.ActualCost}"/>
See also
- The Data-driven decimal places recipe in Chapter 2, Custom Components shows how to format numeric values to a specified number of decimal places.
- 電力自動化實用技術問答
- Getting Started with Clickteam Fusion
- 商戰(zhàn)數據挖掘:你需要了解的數據科學與分析思維
- 輕松學PHP
- 計算機應用復習與練習
- UTM(統(tǒng)一威脅管理)技術概論
- 嵌入式Linux上的C語言編程實踐
- STM32G4入門與電機控制實戰(zhàn):基于X-CUBE-MCSDK的無刷直流電機與永磁同步電機控制實現(xiàn)
- Visual Basic從初學到精通
- 中國戰(zhàn)略性新興產業(yè)研究與發(fā)展·工業(yè)機器人
- 電腦日常使用與維護322問
- Linux嵌入式系統(tǒng)開發(fā)
- 奇點將至
- 學練一本通:51單片機應用技術
- 工業(yè)機器人力覺視覺控制高級應用