workaround: <telerik:RadTreeView OnClientNodeChecked="AfterCheck" ... /> <script> function AfterCheck(tree, ev) { TriStateCheck(tree.get_nodes()); } function TriStateCheck(nodes) { for (var i = 0; i < nodes.get_count() ; i++) { var node = nodes.getNode(i); if (node.get_nodes().get_count() < 1) { // only last level is necessary var old = node.get_checked(); node.set_checked(old); } else { TriStateCheck(node.get_nodes()); // reentrance } } } </script>