ESS reader Russell wrote in with a question about one of my statements about inline editing and Select fields. It’s a little bit longer read, but I think you’ll find our conversation valuable:
I’ve been reading your ESS series with interest and I just noticed in this one you say that select fields (dropdowns) are not inline editable. Could you clarify this? I can inline edit things like Sales Rep and Status on a customer record – am I missing something here?
Thanks for the great question!
First let’s start with the source of the statement, “Select fields are not inline editable”. That statement comes directly from the NetSuite API documentation for the `record.submitFields` method; you can check it out in the Method Description section on the Help page “record.submitFields(options)”:
You cannot use this method to edit and submit the following:
- Select fields
- Sublist line item fields
- Subrecord fields (for example, address fields)
I find it a bit misleading that NetSuite says, “you cannot use this method to edit…”, because as you’ve correctly pointed out, you actually *can* use this method to edit those fields.
However, when you do so, you are not actually *inline editing* those fields; you are simply *editing* them, and that is a very significant difference. Because those fields are not technically inline editable, when you use `record.submitFields` to edit them, *it will still work*, but in the background NetSuite will actually load the entire record, set the fields, and submit the record back to the database. This carries with it all of the performance and governance penalties that a normal call to `record.load` and `record.save` would.
This is why I say these fields are not inline editable. They *are* editable, though. This might seem like splitting hairs; I assure you it isn’t! This is a very real and important distinction to understand.
To read a little more on this behavior of “inline editing non-inline-editable fields” (really a mouthful), see the Help page titled “Consequences of Using nlapiSubmitField on Non Inline Editable Fields”. This is a SuiteScript 1.0 article, but as far as I am aware is still applicable to SuiteScript 2.0.
To find out which fields are inline editable, check out the `nlapiSubmitField` column of the Records Browser for your record type in question.
Does that help?
BTW Do you mind if I use this as tomorrow’s email to the group? I can leave it anonymous if you’d like, but this is a great question that I feel the whole group could benefit from.
Thanks for your reply! It looks like this rabbit hole goes even deeper, because while that article (“Consequences of Using nlapiSubmitField on Non-InlineEditableFields”) is saying that you can use nlapiSubmitField (and presumably the 2.0 equivalent) to edit fields that are not inline editable in the UI, those specific fields I referred to (status and sales rep on Customer) actually are editable in the UI too.
So it appears there are differences between the UI and SuiteScript, and also other exceptions which may or may not be documented. I’ve found the more I learn about NetSuite, the more I realize how little I know :S
In the above-mentioned help article there are no specifics given about what fields are inline editable, except to say that “fields that have no slaving relationship to other fields” are inline editable. (There is a full list given in “Inline Editing and SuiteScript Overview.”) So I wonder: is the ‘no select fields’ comment a general comment which has exceptions where there ‘is no slaving relationship’? Are those select fields I mentioned excepted from the extra governance given that they are inline editable in the UI? Does NetSuite documentation leave a lot to be desired? Or am I misunderstanding exactly what a ‘select field’ is? Or am I just way overthinking it?
Anyway, I’m perfectly happy for you to use this as tomorrow’s email.
PS: I re-read your email before hitting Send, and thought I’d better look at the Records Browser for those fields as mentioned. Both say ‘select’ under ‘Type’. Under the ‘nlapiSubmitField’ column, ‘salesrep’ has ‘false’ but ‘entitystatus’ has ‘true’. And then my head exploded…
The more I look into it, the more I’m convinced that NetSuite is just one giant network of rabbit holes all leading to another network of rabbit holes.
The true source that I use is the Records Browser when I want to know if something is inline-editable or not, so definitely don’t try to memorize any rules or anything like that.
It’s CRITICALLY important that you understand the implications of trying to inline-edit a non-inline-editable field; it’s NOT important that you know exactly which fields are/not inline-editable off the top of your head.
P.S. I saw that exact thing in the Records Browser when I was “checking myself” before replying to you. My head also exploded.