Working with a prototype of a lightning web component, I get that the datatable, just like its Aura brother, needs the columns to be manually specified.
That being said, I have the following specification for a datatable that receives pricebook entries:
const columns = [ { label: 'Name', fieldName: 'Product2.Name' } ] The names do not display on the component, but if I use a forEach to list the data retrieved by the component, I get the products names, like in:
connectedCallback() { getProducts({ pricebookId: this.pricebookId, countLimit: 4 }) .then(result => { this.products = result this.products.forEach(p => { console.log(p.Product2) // Proxy {} object is displayed console.log(p.Product2.Name) // The name is displayed }); this.tableIsLoading = false }) .catch(error => { console.error(error) }) } If the datatable component does not support this, then the correct way of dealing with this is to work with the retrieved data, and build a new list with direct access to the data (no parent-child objects), or to edit the current data and include fields that I can access?
For example, should I iterate the result data and add a productName attribute to the elements, and then set 'productName' as the attribute on the column variable?
Edit: just noticed that you can't iterate the data list and create a new productName property. You end up with a TypeError: 'set' on proxy: trap returned falsish for property 'productName'.