The described functionality: a parent node being checked when all of its child nodes are checked and "partially" checked when some of its nodes are checked is available for the TreeView and can be enabled through the checkChildren
configuration option, or after the TreeView is initialized for the MVC wrapper:
treeview = $(
With this functionality enabled a parent node can be in one of three states: unchecked - in none of its child nodes are checked, checked - if all of its nodes are checked, indeterminate - if some of its child nodes are checked while others are not.
With regard to the parent not assuming the expected state on initial load, if the child items are not loaded initially the state of the parent will not reflect the child nodes' state. In other words the parent node cannot be in indeterminate state if it still does not have any child nodes loaded. This can be observed in loadOnDemand
scenarios (this functionality is enabled by default)., thus a parent node will change its state to indeterminate only after its child nodes have been loaded and some of them are checked (not all).