I have a lightning:datatable
, which is rendering a set of objects:
<lightning:datatable data="{!v.propertyMappings}"
columns="{!v.columns}"
keyField="Id"
onrowaction="{!c.handleRowAction}"
hideCheckboxColumn="true"
resizeColumnDisabled="true" />
I want to dynamically enable/disable some rows based on an attribute on Custom_Object__c
that is loaded into {!v.propertyMappings}
.
I tried adding a disabled
attribute to the object data when it was loaded in my helper:
var responseValues = response.getReturnValue();
for (var i = 0; i < responseValues.length; i++) {
responseValues[i]["disabled"] = true;
}
component.set("v.propertyMappings", responseValues);
But it didn't seem to have any effect…?
My row-actions are still available (from {!v.columns}
):
{ type: "action", typeAttributes: { rowActions: actions } }
Should I just use another component?
Best Answer
You need to handle the disabled attribute in your getRowActions handler (you do have one, right?). Here's a self-contained example that demonstrates this.
Application
Controller
Helper
Here, I'm using row-based data to determine if the menu item is disabled or not. This is done dynamically at the moment the menu button is clicked. You can make this as simple or complicated as need be.