I just ran into an issue working on an 8.2 version of the Infor CRM web client. I was building a quickform with an editable grid that contained various tools that should be rendered on the toolbar. When I deployed the grid would not load and I was getting a client side error of:
dojo.js:2 Uncaught TypeError: Cannot read property 'childNodes' of null
at Object.place (dojo.js:2)
at Object.addToolsToWorkspaceToolbar (Sage-Combined.js:1)
at Object.postMixInProperties (Sage-Combined.js:1)
at Object.create (Sage-Combined.js:1)
at Object.postscript (Sage-Combined.js:1)
at new <anonymous> (dojo.js:2)
at ProgramAccounts.js:189
at _cc (dojo.js:2)
at _37 (dojo.js:2)
at dojo.js:2
This code was failing when trying to place the Tools onto the form’s toolbar area.
It turns out the reason for this is in the client side javascript file, that is created when a editable grid quick form is deployed, it uses the SmartPart’s Name to build an ID.
However in my case the SmartPartID of the smart part defined on the page was different than the name of the Quickform. i.e. the Quickform name was “MyAccounts” but on the page this tab was defined with a SmartPartID of “MyAccount”.
This caused the actual smart part to be created with a different name on the web page. Since elements in the DOM are based off the SmartPartID name and not the underlying Quickform name, the ID of the toolbar was not what the generated grid’s javascript file was expecting and so the Tools were trying to be placed onto a toolbar by an ID that did not exists.
The lesson here: make sure your page SmartPartIDs do not differ from the name of the Quickform. Pretty lame-o.



