Our developers have thoroughly analyzed this behavior and confirm that it is correct. Let me elaborate on this.
When the client-side ASPxClientTreeList.SelectNode method is used, both the client-side and server-side SelectionChanged events are not triggered. This is done to avoid sending many callback requests to the server and to improve performance. For example, if an application contains client-side code that selects a lot of nodes, it will not send a callback to the server each time a node is selected.
If it is required to raise the SelectionChanged event on the server side, it is possible to use the client-side ASPxClientTreeList.PerformCallback method. After that, ASPxTreeList will update its state and the server-side ASPxTreeList.SelectionChanged event will be triggered.
Similar behavior will occur if the TreeListSettingsSelection.Recursive property is set to true. If the ASPxClientTreeList.SelectNode method is used, the parent node will not be selected. To select it, use the client-side ASPxClientTreeList.PerformCallback method after selecting a node on the client side.