我有一张联系人表。表必须包含 idName 和 Name 列。字段 idName 必须显示格式为 003XXXXXXXXXXXXXXXName 的记录,作为 Id 003XXXXXXXXXXXXXXX 和字符串名称的串联。这是我的代码:
html
<template>
<lightning-card>
<lightning-datatable
key-field="Id"
data={contacts}
columns={columns}
hide-checkbox-column="true"
show-row-number-column="true">
</lightning-datatable>
</lightning-card>
</template>
js
import { LightningElement, track, wire } from 'lwc';
import getContacts from '@salesforce/apex/ContactController.getContacts';
export default class ContactsTable extends LightningElement {
@track columns = [
{ label: 'Name', fieldName:'recordLink', type: 'url',
typeAttributes: {label: {fieldName: "ContactName"}, tooltip: "Name", linkify: true} },
{ label: 'Id', fieldName: 'Id'},
{ label: 'Name', fieldName: 'Name'}
];
@track contacts;
@wire(getContacts)
wiredContacts(value) {
const {error, data} = value;
if (data) {
let contactData = JSON.parse(JSON.stringify(data));
contactData.forEach(record => {
record.recordLink = "/" + record.Id;
record.ContactName = record.Name;
});
this.contacts = contactData;
} else if (error) {
this.error = error;
}
}
}
巅峰班
public with sharing class ContactController {
public ContactController() {}
@AuraEnabled(cacheable=true)
public static List<Contact> getContacts(){
return[ SELECT Id, Name
FROM Contact
ORDER BY Name
];
}
}
谢谢。
我尝试用这个方法,但没有成功
concatenateCols() {
this.columns = [...this.columns, { label: 'idName', fieldName: 'idName' }];
this.contacts = this.contacts.map(item => {
return { ...item, idName: `${item.Id} - ${item.Name}` };
});
}