Our tree implementation may have a very large number of nodes, which are hierarchically grouped and some nodes may appear under multiple branches.
We use various functions to add logic to the tree and nodes, such as checking off child nodes, unchecking parent nodes, and checking all instances of a node under other branches.
These routines are very quick in FireFox, but alarmingly slow in IE. As an example, checking child nodes takes around 40ms in FF, but takes almost 4.5 seconds in IE with about 800 nodes in the tree.
I've already applied every best practice I could find to try to trim these times down in IE, but I don't think I'll be able to make a meaningful impact at this point.
The tree is used for selections, but also keeps "state" of what is selected which is used as input for a separate AJAX call. The selected nodes are persisted between sessions. For this reason, normal load on demand wouldn't work as I need selected nodes to be there on the client for the client logic to work.
What I'm wondering is this. Can I bind the tree in such a way that any nodes which I know are selected will be bound and rendered, but of the remaining nodes, only the 1st level nodes will bind. These unselected first level nodes would then use load on demand to bind the children, making them available to select on the client.
I'm hoping that this "hybrid" implementation will greatly reduce the number of actual nodes in the tree, while still behaving similarly to the current implementation.
Thanks.
We use various functions to add logic to the tree and nodes, such as checking off child nodes, unchecking parent nodes, and checking all instances of a node under other branches.
These routines are very quick in FireFox, but alarmingly slow in IE. As an example, checking child nodes takes around 40ms in FF, but takes almost 4.5 seconds in IE with about 800 nodes in the tree.
I've already applied every best practice I could find to try to trim these times down in IE, but I don't think I'll be able to make a meaningful impact at this point.
The tree is used for selections, but also keeps "state" of what is selected which is used as input for a separate AJAX call. The selected nodes are persisted between sessions. For this reason, normal load on demand wouldn't work as I need selected nodes to be there on the client for the client logic to work.
What I'm wondering is this. Can I bind the tree in such a way that any nodes which I know are selected will be bound and rendered, but of the remaining nodes, only the 1st level nodes will bind. These unselected first level nodes would then use load on demand to bind the children, making them available to select on the client.
I'm hoping that this "hybrid" implementation will greatly reduce the number of actual nodes in the tree, while still behaving similarly to the current implementation.
Thanks.