You can hide or 'grey' out attribute based on a condition, see: https://docs.mendix.com/refguide6/conditions
In your case making a attribute not editable based on the attribute 'business type', will result in an 'grey' attribute which is not editable.
As to the button, you can add a button in the listview that is visible based on the 'business type' attribute. Behind this button you can add logic with for example a pop-up to add some text and after this change the 'business type' attribute in order to make the line editable again.
You could consider using conditional visibility to show one of 2 containers based on the 'business type'. One of the containers would be styled normally, and the other could be styled grey. Only one of the 2 containers would ever be visible at any given time, so the end user would see only the correct styling for that row.
You could also place a button in the 'grey' container that inverts the visibility condition and also shows a comment box, perhaps by flipping a boolean on the row object.