TreeGrid and Smartparsing mode

I have a tree grid that’s using smartparsing mode. The grid loads and work fine. I have an operation that loops through all the rows and cols and sets the value of each cell. This works fine if all the rows in my tree grid have been expanded (parsed). However, if some child rows haven’t been expanded yet, and I try to set the values on those unparsed rows, the setting of the values seems to work fine (there is no error, at least), but afterwards, if I try to expand the parent row, no child rows appear anymore…even though the plus sign is still there.

I’m using    grid.cells(rowId, colIndex).setValue(newValue) to set the values.

I didn’t take a close look, but it appears that grid.cells(rowId, colIndex) will eventually call getRowById, which then calls this._seekAndDeploy(id) for the unparsed rows.

Any ideas on what’s going on?


In smartXMLParsing mode, the childs in initially closed nodes not parsed, so instead of HTML elements the configuration XML stored.
The grid.cellsX(… commands used in many time critical places, so they made as small as possible, they doesn’t call any additional checks and use direct access to data instead.

So in case of smarParsing the
may fail, to be sure that row really present in grid, you can use

This also related to smartRendering and buffering modes of plain grid.

Ok. I actually need to update the values of initially closed child nodes.  I want to update the stored configuration XML of those nodes, so when they are eventually expanded, the new values appear. this._seekAndDeploy(id) seems to do this, however after updating the tree has problems. Is there a correct way to update hidden node values?  Your suggestion of using mygrid.getRowById(‘hidden_row_id’) seems like it would just help me to avoid accessing hidden rows, right?

By calling
grid forced to parse the row from XML , so after such command, if row exists - it will be operable for any API calls.
( basically it just the wrapper around _seekAndDeploy , but it call this functionality only in necessary cases, and prevent double initialization, which can occur, if _seekAndDeploy called directly )