When your TreeView uses data binding the NodeDataBound event will not fire unless your
DataFieldParentID column has a null value. I found this when binding to custom objects; in my application in most cases the top most parent had a null value in the DataFileParentID column. Because it was a custom object (composite object) In rare cases my object was returning a zero length string as parent. This was interpeted as being not a valid parent by TreeView and therefore it wasn't consdered for the root, and therefore, the NodeDataBound event wouldn't fire.
Another clear indicator that this problem is occuring is when the TreeView is displayed on the page as empty.
Hope this helps others as my searches here didn't provide any insight into why the event wasn't firing.