Salesforce Lightning组件中的动态可重用自定义列表视图

2023-10-19 07:20

本文主要是介绍Salesforce Lightning组件中的动态可重用自定义列表视图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

📖摘要


今天分享下 —— Salesforce Lightning组件中的动态可重用自定义列表视图 的一些基本知识,欢迎关注!

Salesforce始终在开发新功能。最近引入了新的闪电组件,称为“ lightning:listView ”。这有助于我们根据特定对象在闪电体验,闪电社区和Salesforce移动应用程序上的列表视图查看所有记录。在标准的“ lightning:listview”组件中,我们一次只能显示一个列表视图,并且要进行更改,我们需要在代码中再次进行编辑。为了使其更加灵活和动态,我们创建了一个自定义下拉菜单,这将帮助我们直接从闪电组件输出更改列表视图。

在这里插入图片描述


❤正题


ListViewController [顶点控制器]
public class listViewController {/*apex method to fetch wrapper of list view*/ @AuraEnabledpublic static list<listViewWrapper> listValues(string objectInfo){list<listViewWrapper> oListViewWrapper = new list<listViewWrapper>();for(ListView lv : [SELECT id, Name, DeveloperName FROM ListViewWHERE sObjectType = : objectInfo ORDER By Name ASC]){ listViewWrapper oWrapper = new listViewWrapper();oWrapper.label = lv.Name;oWrapper.developerName = lv.DeveloperName;oListViewWrapper.add(oWrapper);}return oListViewWrapper; }/*wrapper class to store listView details*/ public class listViewWrapper{@AuraEnabled public string label{get;set;} @AuraEnabled public string developerName{get;set;} }
}

闪电组件[CustomListView.cmp]
<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction"access="global"controller="listViewController"><!-- call doInit js function on component load to fetch list view details-->   <aura:handler name="init" value="this" action="{!c.doInit}"/><!-- aura attributes -->   <aura:attribute name="listViewResult" type="string[]"/><aura:attribute name="objectInfo" type="string" default="Account"/><aura:attribute name="currentListViewName" type="string" /><aura:attribute name="bShowListView" type="boolean" default="false"/> <!-- custom dropdown to display available list view options--><div class="slds-form-element"><lightning:select name="select1" onchange="{!c.onPicklistChange}" label=" " class="customCls"><aura:iteration items="{!v.listViewResult}" var="listView"><option value="{!listView.developerName}">{!listView.label}</option></aura:iteration> </lightning:select> </div><!-- lightning List View : https://sforce.co/2Q4sebt--> <aura:if isTrue="{!v.bShowListView}"><lightning:listView objectApiName="{!v.objectInfo}"listName="{!v.currentListViewName}"rows="5"showSearchBar="true"showActionBar="false"enableInlineEdit="true"showRowLevelActions="false"/></aura:if> 
</aura:component>

在此列表视图示例中,我们使用了 Account 对象,您可以根据闪电组件第10行的要求更改对象API(区分大小写)的名称


JavaScript控制器[CustomListViewController.js]
({doInit : function(component, event, helper) {// call apex method to fetch list view dynamically var action = component.get("c.listValues");action.setParams({"objectInfo" : component.get("v.objectInfo")});action.setCallback(this, function(response) {var state = response.getState();if (state === "SUCCESS") {var listViewResult = response.getReturnValue();if(listViewResult.length > 0){// set listViewResult attribute with responsecomponent.set("v.listViewResult",listViewResult);// set first value as default valuecomponent.set("v.currentListViewName", listViewResult[0].developerName);// rendere list view on componentcomponent.set("v.bShowListView", true);     }            } else if (state === "INCOMPLETE") {}else if (state === "ERROR") {var errors = response.getError();if (errors) {if (errors[0] && errors[0].message) {console.log("Error message: " + errors[0].message);}} else {console.log("Unknown error");}}});$A.enqueueAction(action);},onPicklistChange: function(component, event, helper) {// unrenders listView component.set("v.bShowListView", false); // get current selected listview Name var lstViewName = event.getSource().get("v.value"); // set new listName for listViewcomponent.set("v.currentListViewName", lstViewName);// rendere list view again with new listNew  component.set("v.bShowListView", true); },
})
  • 注意:检查代码注释。

CSS [CustomListView.css]
/* align picklist inside list view*/
.THIS .customCls{margin-top: -10px;width: 50%;position: absolute;right: 17px;
}

效果:

在这里插入图片描述


🎉最后

  • 更多参考精彩博文请看这里:《salesforce 系列》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!

这篇关于Salesforce Lightning组件中的动态可重用自定义列表视图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238261

相关文章

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言