Visualforce Basic学习

Visualforce是salesforce特有的web开发框架,可以用来开发用户界面,visualforce Page类似一个单独的web页面,Visualforce Form是可以与服务器交互的表单,当用户需要填写修改数据时使用。

有几种方法使用Visualforce Page

1.从App Launcher中打开一个独立的页面

2.作为一个Tab打开。

3.在标准的Page layout中显示。

4.作为Lightning app builder页面中的一个组件。

5.通过快速操作打开。

6.通过按钮或链接打开(包括自定义和覆盖标准按钮)。

一个Visualforce Page的URL :  https://MyDomainName.my.salesforce.com/apex/HelloWorld


Visualforce不区分大小写,

{! …}告诉Visualforce,大括号内的任何内容都是动态的,并以表达式语言编写,它的值是在运行时计算和替换的,其实就是变量拉。.

下面是一个Visualforce Page

有一些常用的标签,<Apex:page> <Apex:pageBlock>,页面中也可以嵌入HTML代码

<apex:detail>以Salesforce Classic样式显示一条用户记录。

<apex:detail>一次显示许多相关列表

与用户交互的表单<Apex:form>.如果你需要返回服务器数据,可以使用form

表单<apex:form>, 文本输入框<apex:inputField>,按钮<apex:commandButton>

<apex:outputLink>组件输出内容

URLFOR() 利用$Action全局变量,指向联系人编辑或者删除的链接。用法:{! URLFOR($Action.Contact.Delete, contact.Id) }

<apex:pageCommandButton>操作按钮,可以放在apex:pageBlockButtons>中,样式为 上下都有操作按钮,且居中。

<apex:pageBlockButtons> 不能包含在其他<apex:pageBlockSection>内,会报错,must direct parent blabla……。

<apex:inputCheckbox/>复选框


用来显示处理过程中产生的错误信息。最简单的是用法是

详细用法可参考:https://www.crmsalesforcetraining.com/visualforce-apexpagemessage-tag/


在Preview一个页面时通过新的tab打开,如需要Lightning Experience中打开,可使用Chrome开发工具。

但是使用Chrome工具打开页面时报错误。搜索了一下,直接Preview VFP,是没有Lightning

关于这个问题的讨论:

https://developer.salesforce.com/forums/?id=9060G000000BiGtQAK

Playground 即使切换到Lightning experience,ctrl+shift+j还是会切换到classic,所以使用下面代码依然报错。

用org,使用下面代码,会先打开helloworld页面,但是又回到classic home页面。

$A.get("e.force:navigateToURL").setParams(

    {"url": "/apex/HelloWorld"}).fire();

List包含有序的对象集合。Apex中的List是Array的同义词,两者可以互换使用。

List<String> colors = new List<String>();

String[] colors = new List<String>();

全局变量

Visualforce中的全局变量 Global Variable:$User,$Setup,$Orgnization

比如可以通过$User.Name获取登录用户的姓名,其他常用的全局变量请参考:

https://developer.salesforce.com/docs/atlas.en-us.224.0.pages.meta/pages/pages_variables_global.htm

标准控制器StandardController

Visualforce使用MVC模式,V(View)这里就是Visualforce Page,通过控制类与数据库进行交互。

Standard Controller 和 Standard List Controller的区别

单个记录数据的显示:使用Standard Controller ;列表的显示使用Standard List Controller。使用过程:

1.当页面被加载,并且<apex:page>组件被激活时,它激活客户对象的标准控制器。

2.标准控制器可以看到URL中有一个ID参数,并搜索并检索匹配的客户记录。

3.标准控制器接受记录并将其放入可供页面使用的变量中。该变量与标准控制器的sObject:Account具有相同的名称。它是一个对象变量,并包含Account sObject上可用的所有字段。

4.四个Visualforce表达式都引用了Account变量。他们使用“点符号”访问Account变量中的各个字段。所以,{! Account.Name}获取客户的名称,依此类推。


列表控制器Standard List Controller 

标准控制器是单个记录的,List是显示一个列表的。在代码书写上。

列表控制器在<apex:page>组件上设置standardController属性,这点同标准控制器。然后设置recordSetVar属性。recordSetVar设置一个变量名称,用来表示记录的集合,所以这个变量通常被命名为对象名称的复数,这里是Contacts。

<apex:pageBlockTable> 显示表格数据,比如展示Related List。其中value属性指向的变量就是上面recordSetVar,即该表格用来展示Contacts List。var的作用是把该列表中的一条记录指定一个变量名,后面一列值只可以直接用变量名展示,比如ct.FirstName。

</apex:column>展示其中的一列。

其他的迭代组件,<apex:dataList>和<apex:repeat>。

过滤器的使用:

{! listViewOptions} 用来显示当前对象的视图列表。

{! filterId} 设置列表视图过滤器选择的结果,这个变量必须是String类型的。

<apex:actionSupport 有两个属性,event是触发的事件,reRender是页面更新的对象,当前的contacts_list是pageBlock的id。

所以当下拉列表变化时,只刷新pageBlock部分,而不是整个页面。

静态资源的使用

静态资源使用$ Resource全局变量进行引用,该变量可以由Visualforce直接使用,也可作为URLFOR()之类的函数参数。

下载最新版的jQuery文件,上传到Statc Resources中,然后就可以直接在vfp中使用,$Resource.jQuery.

使用点符号将它与<apex:includeScript>(用于JavaScript文件),<apex:stylesheet>(用于CSS样式表)或<apex:image>(用于图形文件)标签中的资源名称相结合它到你的页面。

同样静态图片也可以上传到系统中,vfimagetest为资源名称,后面cats/kitten1.jpg是放在压缩包中的图片,直接使用即可。

自定义控制器

//前面说的都是vfpage通过标准控制器返回数据并展示到页面的方法。

另外还可以通过自定义控制器,从数据库查询数据,返回到一个List。vf page再通过该List展示到页面的方法。

这一步需要的操作是:1创建一个Visualforce Page,2创建一个Controller Class

Visualforce Page
Conroller Class

在class中加入变量的方法,以下两个语句都可以:

方法1: List<Case> results = Database.query(

            'SELECT Id, CaseNumber ' +

            'FROM Case where status=\'' + strStatus +'\''

            );

 方法2: List<Case> results =[SELECT Id, CaseNumber FROM Case where status=:strStatus];


这个Module做完好久了,一直忙没时间整理,最近又看一遍算温故知新了。

参考文档:

https://developer.salesforce.com/docs/atlas.en-us.224.0.apexcode.meta/apexcode/langCon_apex_collections.htm

在遇到问题中,发现有个博主详细记录了学习过程,很赞:

https://blog.csdn.net/weixin_42213195/article/details/102623984

P6

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容