博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
salesforce 零基础学习(四十四)实现checkbox列表简单过滤功能
阅读量:5023 次
发布时间:2019-06-12

本文共 4649 字,大约阅读时间需要 15 分钟。

现在做的项目代码是原来其他公司做的,要在原来基础上业务进行适当调整加上一些CR,其中有一个需要调整的需求如下:

原来使用apex:selectCheckboxes封装了一个checkbox列表,因为数据太多导致显示起来比较丑,用户希望改进一下UI。

apex:selectCheckboxes作用原理为解析成html以后变成table标签,

大概层级结构可以分成<table><tbody><tr><td><input type="checkbox"/><label></td></tr></tbody></table>.并且每一个checkbox作为一个tr存在。

原来的代码演示如下:

Apex:模拟50个checkbox的列表

1 public with sharing class SelectCheckboxesController { 2      3     public List
options{get;set;} 4 5 public Integer optionSize{get;set;} 6 7 public SelectCheckboxesController() { 8 options = new List
(); 9 for(Integer i=0;i<50;i++) {10 options.add(new SelectOption(String.valueOf(i),String.valueOf(i)));11 }12 optionSize = options.size();13 }14 15 }

Visualforce Page:显示数据

1 
2
3
4
5
6
7
8
9 10
11

此种方式显示效果如下所示:

此种方式对于用户选择来说确实不方便,显示也不够美观,因为数据量多但是每行只显示一条数据。

想出来的解决方案有两个,一种是扩展列数,比如每行显示4列,另一种是新增搜索功能,通过搜索筛选符合条件的数据。

一.扩展列数,每行显示4列数据

原来的控件仅支持单列,如果扩展列数,则需要使用其他控件,比如pageblocktable或者html中的table,使用apex:repeat渲染,这里使用第二种

Apex代码:

public with sharing class SelectCheckListController {        public Integer itemSize{get;set;}        public Integer itemSizeDown{get;set;}        public List
itemList{get;set;} public SelectCheckListController() { init(); } public void init() { List
tempItemList = new List
(); for(Integer i=0;i < 100;i ++) { tempItemList.add('item ' + String.valueOf(i)); } itemList = new List
(); Decimal itemListSizeDouble = Decimal.valueOf(tempItemList.size()) / 4; itemSize = Integer.valueOf(itemListSizeDouble.round(System.RoundingMode.CEILING)); itemSizeDown = Integer.valueOf(itemListSizeDouble.round(System.RoundingMode.DOWN)); for(Integer i = 0;i < itemSize;i++) { Item tempItem = new Item(); if(i * 4 < tempItemList.size()) { tempItem.item1 = tempItemList.get(i * 4); } if(4 * i + 1 < tempItemList.size()) { tempItem.item2 = tempItemList.get(i* 4 + 1); } if(4 * i + 2 < tempItemList.size()) { tempItem.item3 = tempItemList.get(i * 4 + 2); } if(4 * i + 3 < tempItemList.size()) { tempItem.item4 = tempItemList.get(i* 4 + 3); } itemList.add(tempItem); } } public class Item { public String item1{get;set;} public String item2{get;set;} public String item3{get;set;} public String item4{get;set;} }}

Visualforce Page:

1 
2
3
5
4
6
7
8
9
10
11 12
{!ite.item1}
{!ite.item2}
{!ite.item3}
{!ite.item4}
13
14

此种方式显示效果如下:

此种方式设计出来的样式其实没有太大的作用,如果每个item的value长度不同,则显示效果很丑,所以添加搜索框,过滤数据方式显得更加符合要求。

二.过滤数据:

Apex代码:

1  public class SimpleSelectCheckboxesController { 2     public List
options{get;set;} 3 4 public Integer optionSize{get;set;} 5 6 public List
optionsBackUp{get;set;} 7 8 public String inputValue{get;set;} 9 10 public SimpleSelectCheckboxesController() {11 options = new List
();12 optionsBackUp = new List
();13 for(Integer i=0;i<100;i++) {14 options.add(new SelectOption(String.valueOf(i),String.valueOf(i)));15 }16 optionSize = options.size();17 optionsBackUp.addAll(options);18 }19 20 public void doAction() {21 options = new List
();22 for(Integer i=0;i

Visualforce Page

1 
2 3
4
10
11
12
13
14
15
16
17
18 19
20
21
22
23

显示效果展示:

1.初始进入画面

2.模糊搜索显示结果布局

3.搜索内容不存在情况下布局

总结:此种方式并没有特别制作checkbox选中后往后台如何传值,感兴趣的伙伴可以自行玩耍。通过这个小需求的改造可以看出最开始设计项目的时候页面相关尽量选用灵活的一些控件,很多VF自带的控件限制特别多,如果项目需要经常页面改动的建议少量使用VF自带控件。如果checkbox列表有更加好的优化方案,欢迎留言。如果篇中有错误的地方欢迎指正。



 

转载于:https://www.cnblogs.com/zero-zyq/p/5834394.html

你可能感兴趣的文章
CTF中那些脑洞大开的编码和加密
查看>>
简化工作流程 10款必备的HTML5开发工具
查看>>
c++ 调用外部程序exe-ShellExecuteEx
查看>>
Java进击C#——语法之知识点的改进
查看>>
IdentityServer流程图与相关术语
查看>>
BirdNet: a 3D Object Detection Framework from LiDAR information
查看>>
icon fonts入门
查看>>
【Django】如何按天 小时等查询统计?
查看>>
HDU2191(多重背包)
查看>>
测试用例(一)
查看>>
【转】 mysql反引号的使用(防冲突)
查看>>
邮件中的样式问题
查看>>
AJAX 状态值与状态码详解
查看>>
php面向对象编程(oop)基础知识示例解释
查看>>
1.在数组中找到与给定总和的配对
查看>>
树的子结构
查看>>
关于根据Build Platform或者OS 加载x86或者x64 dll的问题
查看>>
程序员高效开发的几个技巧
查看>>
js-权威指南学习笔记19.2
查看>>
hexo 搭建博客
查看>>