栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Salesforce-Visualforce-5.标准列表控制器(Standard List Controllers)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Salesforce-Visualforce-5.标准列表控制器(Standard List Controllers)

一、标准列表控制器简介(Standard List Controller)

标准列表控制器允许创建可以显示或操作一组记录的 Visualforce 页面。
显示记录列表是几乎所有 Web 应用程序的基本行为。Visualforce 只需使用标记,无需后端代码,就可以非常轻松地显示相同类型的记录列表。

标准列表控制器提供了诸多强大的自动行为,例如查询特定对象的记录并使记录在集合变量中可用,以及对结果进行筛选和分页。

将标准列表控制器添加到页面与添加标准(记录)控制器非常相似,目的是一次处理多条记录,而不是只处理一条记录。

二、显示记录列表(a List of Records)

使用标准列表控制器和迭代组件,例如使用 < apex:pageBlockTable> 显示记录列表。
标准(记录)控制器可以轻松地将单个记录加载到可以在 Visualforce 页面上使用的变量中。标准列表控制器与之类似,不同的是,它不是将单个记录加载到变量中,而是将记录的列表或集合加载到变量中。

因为需要处理的是一个集合,而不是单个记录,所以需要使用迭代组件来显示。迭代组件处理类似项的集合,而不是单个值。迭代组件循环遍历集合,并且对于每个记录,根据作为组件标记的一部分提供的模板生成输出。

使用标准列表控制器的标记几乎与使用标准的、一次一条记录的控制器相同。

  • 示例代码1:

    
        
        
            
            
            
            
        
    

  • 代码解析:
    与使用标准控制器非常相似。首先在 < apex:page> 组件上设置 standardController 属性(要使用的对象),然后设置 recordSetVar 属性(设置记录集合创建变量的名称)。

    < apex:pageBlockTable> 是一个迭代组件,用于生成数据表,并带有平台样式。以下是表格标记中会发生的事情。

    1.< apex:pageBlockTable> 的 value 属性设置为标准列表控制器加载的变量 {! contacts }。
    这是 < apex:pageBlockTable> 使用的记录列表。

    2.对于列表中的每条记录,一次一条记录,< apex:pageBlockTable> 将该记录分配给 < apex:pageBlockTable> 的 var 属性中命名的变量。本示例中,变量名称为 ct。

    3.对于每条记录,< apex:pageBlockTable> 使用 < apex:pageBlockTable> 主体中的 < apex:column> 列组件集合定义的行在表中构造一个新行。< Apex:column> 组件依次使用表示当前记录的 ct 变量来提取该记录的字段值。

    4.在循环的外部,< apex:pageBlockTable> 使用 < apex:column> 列组件中的字段,通过查找每个字段标签的方式来创建列标题。
  • 预览结果:
三、将筛选列表视图添加到列表中(Add List View Filtering to the List)

标准列表控制器提供了诸多可用于更改列表显示的特性。其中最强大的特性是列表视图筛选器。可以声明使用单击而不是代码的方式创建列表视图筛选器,标准列表控制器允许在页面上使用已定义的任意列表视图筛选器。

{! listViewOptions } :获取一个对象可用的列表视图筛选器列表。
{! filterId } 设置用于标准列表控制器结果的列表视图筛选器。
将整个 < apex:pageBlock> 封装在 < apex:form> 标签中。要更改标准列表控制器的列表视图筛选器,需要将新值提交回服务器。提交的标准方法是使用 < apex:form> 组件创建的表单。

在 < apex:pageBlock> 标签下,添加以下属性,这样就给< apex:pageBlock> 提供了一个“名称”,就可以用它来实现很酷的 Ajax 效果

id="contacts_list"
  • 示例代码2:

    
        
            Filter:
            
                
                
            
            
            
                
                
                
                
            
        
    
 
  • 代码解析:

列表会在不重新加载整个页面的情况下更新。这种 “Ajax” 效果是由 < apex:actionSupport> 组件上的 reRender="contacts_list” 属性提供的。

组件和 reRender 的组合效果是仅更新在 reRender 属性中命名的页面部分。

由于将 id="contacts_list” 添加到 < apex:pageBlock>,当操作完成时,在无需重新加载整个页面的情况下,即可实现只更新 < apex:pageBlock> 的效果。

此页面新功能的完整生命周期是这样的:

当加载页面时,< apex:selectList> 通过从 {! listViewOptions } 表达式获取列表,创建可用筛选器菜单。listViewOptions 是标准列表控制器提供的属性。

当从菜单中选择一个新选项时,< apex:actionSupport> 组件会触发 onchange 事件。

当 onchange 触发时,页面通过将新项目提交给 < apex:selectList> 中设置的 filterId 属性的方式,提交已选择的新列表视图。

当属性更新时,页面从服务器获得新的响应,在 contacts 变量中会有一个新的匹配记录集合。

由于 < apex:actionSupport> 指定只重新渲染页面的一部分,页面是使用 Ajax(异步 JavaScript)更新的,而不是通过重新加载整个页面的方式。

最终结果是,只需添加几行标记,即可实现错综复杂的行为。

  • 预览结果:
四、向列表添加分页

使用标准列表控制器的分页特性,允许用户单次查看一页长的记录列表。

事实上,标准列表控制器默认情况下只显示符合筛选条件的前 20条记录(如果有的话)。如何让用户访问超出前 20 条的记录,或者每页记录超过 20 条?

分页可以解决这个问题。这是一个标准的 Web 应用程序用户界面元素,通常使用下一页和上一页链接,实现在单页的一长串记录中向前或向后移动。

可以使用标准列表控制器将其添加到页面中,还可以使用进度指示器和菜单来更改每页记录的数量。

  • 代码示例3:

    
        
            Filter:
            
                
                
            
            
            
                
                
                
                
            
            
            
Page: Records per page:
  • 代码解析:
    • 用纯HTML来写分页处,简洁且易用

    • 在分页控件中,< apex:commmandLink> 组件引用了标准列表控制器提供的两种操作方法,Previous 和 Next。结果是执行 Previous 或 Next 操作的链接。

    • 渲染属性(rendered):这就是 Visualforce 有条件地显示组件的方式,即取决于布尔表达式的结果。此处的页面标记引用了标准列表控制器 HasPrevious 和 HasNext 提供的布尔属性,来确定给定方向上是否有更多记录。

      通过使用渲染属性中的表达式,可以在页面上显示或隐藏该组件的结果。当第一次加载页面时,上一页链接置灰,但如果通过单击下一页链接向前移动时,上一个链接则变为活动状态。

    • 每页选择菜单记录时使用之前用到的 < apex:selectList>,但没有通过调用控制器方法来获取菜单值,而是简单地使用 < apex:selectOption> 元素获取所需的值。每次选定的值发生变化时,< apex:actionSupport> 标记都会再次触发菜单,并再次使用 reRender=“contacts_list” 来实现只更新 < apex:pageBlock> 的效果。这里不同的是,使用了 < apex:selectList> 设置标准列表控制器的 PageSize 属性。

  • 预览结果:

标准列表控制器提供了诸多 Web 应用程序中常见的功能,远不止本章节介绍的功能。

例如,除了每次向前或向后移动一个页面的 Previous 和 Next 操作以外,还有指向记录列表开头或结尾的 First 和 Last 操作。

Resources

Standard Controllers
Standard List Controllers
StandardController Class Apex
StandardSetController Class Apex
Create a Custom List View in Salesforce Classic
“The Standard Controller,” in Visualforce in Practice
“The Standard List Controller,” in Visualforce in Practice
Twitter Bootstrap and Visualforce in Minutes

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995965.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号