The DataBound event fires for each node that has children, but does not fire for the bottom-level nodes. This is the same behavior as the hierarchical data source Change event. It fires for each datasource level, which includes a parent and its children, but does not fire for the children unless they also have children. Since there also is no event that triggers when the entire tree is loaded, there is no good way to perform an operation on each TreeView node after the TreeView is refreshed. The only way is to traverse the tree after using a timeout to wait for the datasource to load. This is a brittle arrangement. Incident 1041348 provides a test case for this scenario.