|
Rank: Newbie Groups: Member
Joined: 3/9/2010 Posts: 3
|
The problem is with how IE7 handles the submittal, is not an issue with IE 8 or IE 8 Compatibility mode (supposedly IE 7) or any other browsers.
The treeview has ~7500 items w/checkboxes and upon form submittal, as more nodes are checked submittal times increase to the point where the session times out (on the client-side, before it even gets to the server for processing).
All the other browsers even with all nodes checked, form submittal takes only a second or two.
Is there a setting that needs to be set in: IE7, IIS, on the page...
(Note: this treeview is one of two on the page, the other only has ~400 items. Both have the same settings, the root node is opened with 20-40 child nodes. Also, the loading of page is not an issue, load time 2-5 sec.)
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi, No. There isn't any setting for this. How IE examines the checkboxes is a black box that we don't really have any control over. So the best solution for you is to reduce the number of nodes. The TreeView specifically provided the populate on demand feature for such scenarios. When populate on demand is enabled, the TreeView does not load all the nodes at the very beginning. In fact you would only populate the first level initially. Later when user expands a node, it reaches back to the server side to fetch the child nodes. In this case only nodes that user wants to see are rendered. Even though the TreeView can potentially have a lot of nodes (for example, 7500), but it is unlikely that user will want to see them all. So rendering them all down to the client is not only a performance waste, but can also potentially cause other problems such as the time out problem you experienced due to the large amount of nodes it has to examine through. You can find a working example about populate on demand here: http://demo.essentialobjects.com/Default.aspx?path=TreeView\_i1\_i1Please feel free to let us know if you have any more questions. Thanks!
|
|
Rank: Newbie Groups: Member
Joined: 3/9/2010 Posts: 3
|
The datasource is xml, generated from calling a SQL store procedure (dynamic data based on sp parameters) assigned to an xmlDataSource and this data source is used for the treeview. The example above, doesn't seem be of help or am I missing something...
Note: Also, we added an option so the user can save their selection, all nodes would have to be available to traverse the tree in order to save the selection, as mentioned page load times are not an issue.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi,
Unfortunately a feature exists doesn't mean you can use it without changing any of your code. In the case of populate on demand, you will have to change your code so that your code work together with the TreeView to achieve the maximum performance. Basically the TreeView says to use populate on demand, you have to code to respond "what are all the child nodes for a given parent node X?". The above sample demonstrates exactly that. As to how to figure out what the child nodes are, it is totally up to you and your database structure. Those are your specific business logics and it is well beyond the point and scope of the sample.
Saving selection does not mean you have to traverse all nodes. If you have shown 10 nodes to the user and user checked 2, then to find all those 2 checked nodes you only need to traverse the 10 nodes that you showed the user. It has nothing to do with the fact that you actually have 7500 nodes in your DB. User has not seen the rest 7490 nodes and they didn't even have a chance to check any of them.
Thanks!
|
|
Rank: Newbie Groups: Member
Joined: 3/9/2010 Posts: 3
|
Thanks for your help, I'll give it a go.
|
|