Salesforce LWC相关列表与动态列的内联编辑
我希望你能帮忙。我想创建一个LWC,它使用带有内联编辑的Datatable组件。但是从JS.Meta文件属性中的Lightning页面参数中可以显示哪些列 例如,属性将有一个字段,用于输入我们希望以逗号删除方式显示在相关列表中的字段,并将这些字段传递到要在EDTABLE列表中使用的soql的组件/动态块中 我发现的所有示例都有如下静态声明的列。但我确实希望在Lightning Builder页面中定义这些组件,以便该组件可以在多个对象和不同字段上重复使用: 类:Salesforce LWC相关列表与动态列的内联编辑,salesforce,salesforce-lightning,lwc,Salesforce,Salesforce Lightning,Lwc,我希望你能帮忙。我想创建一个LWC,它使用带有内联编辑的Datatable组件。但是从JS.Meta文件属性中的Lightning页面参数中可以显示哪些列 例如,属性将有一个字段,用于输入我们希望以逗号删除方式显示在相关列表中的字段,并将这些字段传递到要在EDTABLE列表中使用的soql的组件/动态块中 我发现的所有示例都有如下静态声明的列。但我确实希望在Lightning Builder页面中定义这些组件,以便该组件可以在多个对象和不同字段上重复使用: 类: public with shar
public with sharing class ContactController {
@AuraEnabled(cacheable=true)
public static List<Contact> getContactList() {
return [SELECT Id, FirstName, LastName, Title, Phone, Email FROM Contact LIMIT 10];
}
}
import { LightningElement, wire, track } from 'lwc';
import getContactList from '@salesforce/apex/ContactController.getContactList';
import { updateRecord } from 'lightning/uiRecordApi';
import { refreshApex } from '@salesforce/apex';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import FIRSTNAME_FIELD from '@salesforce/schema/Contact.FirstName';
import LASTNAME_FIELD from '@salesforce/schema/Contact.LastName';
import ID_FIELD from '@salesforce/schema/Contact.Id';
const COLS = [
{ label: 'First Name', fieldName: 'FirstName', editable: true },
{ label: 'Last Name', fieldName: 'LastName', editable: true },
{ label: 'Title', fieldName: 'Title' },
{ label: 'Phone', fieldName: 'Phone', type: 'phone' },
{ label: 'Email', fieldName: 'Email', type: 'email' }
];
export default class DatatableUpdateExample extends LightningElement {
@track error;
@track columns = COLS;
@track draftValues = [];
@wire(getContactList)
contact;
handleSave(event) {
const fields = {};
fields[ID_FIELD.fieldApiName] = event.detail.draftValues[0].Id;
fields[FIRSTNAME_FIELD.fieldApiName] = event.detail.draftValues[0].FirstName;
fields[LASTNAME_FIELD.fieldApiName] = event.detail.draftValues[0].LastName;
const recordInput = {fields};
updateRecord(recordInput)
.then(() => {
this.dispatchEvent(
new ShowToastEvent({
title: 'Success',
message: 'Contact updated',
variant: 'success'
})
);
// Clear all draft values
this.draftValues = [];
// Display fresh data in the datatable
return refreshApex(this.contact);
}).catch(error => {
this.dispatchEvent(
new ShowToastEvent({
title: 'Error creating record',
message: error.body.message,
variant: 'error'
})
);
});
}
}
理想情况下,我希望在JS元文件中声明对象和字段等,如下所示。并将这些传递到类/JS等中:
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="EditableRelatedList">
<apiVersion>45.0</apiVersion>
<isExposed>true</isExposed>
<targets>
<target>lightning__RecordPage</target>
</targets>
<targetConfigs>
<!-- Component UI Properties -->
<targetConfig targets="lightning__RecordPage">
<property name="strTitle" type="String" label="Title" description="Enter the title"/>
<property name="objectName" type="String" label="Object Name" description="Enter the object name"/>
<property name="parentFieldAPIName" type="String" label="Parent Field API Name" description="Enter the parent field API Name"/>
<property name="whereClause" type="String" label="WHERE Clause" description="Enter your WHERE clause (Not Required). Do not include 'WHERE'. Eg: firstName = 'David' AND lastName != 'Bradbury'"/>
<property name="fields" type="String" label="Fields" description="Enter the API Names of the fields you would like to use in this Related List seperated by a comma. Eg: FirstName, LastName, CustomField1__c, CustomField2__c "/>
<property name="errorMessage" type="String" label="Error Message" description="Enter your Error Message for when there are 0 records"/>
</targetConfig>
</targetConfigs>
</LightningComponentBundle>
45
真的
闪电记录页
提前谢谢
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="EditableRelatedList">
<apiVersion>45.0</apiVersion>
<isExposed>true</isExposed>
<targets>
<target>lightning__RecordPage</target>
</targets>
<targetConfigs>
<!-- Component UI Properties -->
<targetConfig targets="lightning__RecordPage">
<property name="strTitle" type="String" label="Title" description="Enter the title"/>
<property name="objectName" type="String" label="Object Name" description="Enter the object name"/>
<property name="parentFieldAPIName" type="String" label="Parent Field API Name" description="Enter the parent field API Name"/>
<property name="whereClause" type="String" label="WHERE Clause" description="Enter your WHERE clause (Not Required). Do not include 'WHERE'. Eg: firstName = 'David' AND lastName != 'Bradbury'"/>
<property name="fields" type="String" label="Fields" description="Enter the API Names of the fields you would like to use in this Related List seperated by a comma. Eg: FirstName, LastName, CustomField1__c, CustomField2__c "/>
<property name="errorMessage" type="String" label="Error Message" description="Enter your Error Message for when there are 0 records"/>
</targetConfig>
</targetConfigs>
</LightningComponentBundle>