|
Rank: Advanced Member Groups: Member
Joined: 8/4/2007 Posts: 42
|
Is there a way to get the TreeView to automatically Scroll to keep the currently selected Node in view. My problem is that when using the keyboard to navigate, if you arrow down out of the view the treeview doesn't scroll up to keep your current node in view. You have to click the scrollbar to get it back and then if you want to go back to using the keyboard, click back into the treeview.
I've tried setting AutoScroll and EnableScrolling but they don' help. I guess and EnsureVisible() might be usefull if it can be called on the client side
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi Arnold, EnsureVisible indeed can be called on the client side: http://www.essentialobjects.com/ViewDoc.aspx?t=JSDoc.Public.TreeNode.ensureVisible.htmlYou would call it on a client side TreeNode object. For example:
Code: JavaScript
var treeView = eo_GetObject("TreeView1");
var topGroup = treeView.getTopGroup();
var secondNode = topGroup.getItemByIndex(1);
secondNode.ensureVisible();
Please feel free to let us know if you have any other questions. Thanks
|
|
Rank: Advanced Member Groups: Member
Joined: 8/4/2007 Posts: 42
|
OK now I would need an event that takes place on the client side when you navigate from one node to another using the keyboard so that as the new node is selected it calls EnsureVisible(). You have onClick and other events but I don't find anything for when the keyboard changes the highlighted node. Or a selected changed event. The real purpose is to keep the currently highlighted node in view when the keyboard moves you down below the bottom of the view. Maybe this isn't the best way to do it. Component Arts does this automatically. Also is there a way given a node buried in the tree to expand it and all the parent nodes above it. eo_support wrote:Hi Arnold, EnsureVisible indeed can be called on the client side: http://www.essentialobjects.com/ViewDoc.aspx?t=JSDoc.Public.TreeNode.ensureVisible.htmlYou would call it on a client side TreeNode object. For example:
Code: JavaScript
var treeView = eo_GetObject("TreeView1");
var topGroup = treeView.getTopGroup();
var secondNode = topGroup.getItemByIndex(1);
secondNode.ensureVisible();
Please feel free to let us know if you have any other questions. Thanks
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi Arnold, I see. There doesn't see to be a way to do that now. Probably moving the selected node should actually fires the item click event. But either way, using keyboard to highlight an item should automatically move the highlighted item into view. So we will get that fixed and get an update build to you in a few days. You can use the following code to expand a node and all its parent nodes:
Code: JavaScript
function expandPath(TreeNode node)
{
//Expand all the parents first
var parentGroup = node.getParentGroup();
if (parentGroup != null)
{
var parentNode = parentGroup.getParentItem();
if (parentNode != null)
expandPath(parentNode);
}
//Expand ourself
node.setExpanded(true);
}
Obviously it makes sense to have this function on the TreeNode object as well. So we will probably that as well. Thanks for your feedback. Let us know if you have any more questions. Thanks
|
|
Rank: Advanced Member Groups: Member
Joined: 8/4/2007 Posts: 42
|
Thanks for the really quick response. And as long as your taking requests.... :-) Let me explain what I'm trying to do a little more throughly. The app uses a treeView to display a tree of NNTP headers in a frame. When an item in the tree is selected the message for that header is displayed in another frame. This works fine with NavigateUrl and Targetwindow. In the Tree any messages that are New since some time are bolded so they are easy to spot. However since they are mostly embeded in the Tree you can't see them unless you can Expand down to that node and any other bolded nodes. I build the nodes dynamically on the server side. and at the point of bolding tried this. if (bRecent) { rNode.Text = "<b>" + nodeText + "</b>"; ExpandAncestors(rNode); rNode.EnsureVisible(); } Where ExpandAncestors was private void ExpandAncestors(EO.Web.TreeNode aNode) { if (aNode.ParentNode != null) { ExpandAncestors(aNode.ParentNode); aNode.ParentNode.Expanded = true; } aNode.Expanded = true; } But this doesn't seem to work from the Server Side Solving this and the scrolling problem and I think I'll have a winner. eo_support wrote:Hi Arnold, I see. There doesn't see to be a way to do that now. Probably moving the selected node should actually fires the item click event. But either way, using keyboard to highlight an item should automatically move the highlighted item into view. So we will get that fixed and get an update build to you in a few days.
|
|
Rank: Advanced Member Groups: Member
Joined: 8/4/2007 Posts: 42
|
One other item on Keyboard handling. This is used by blind clients to navigate. I'm not sure you want to by default have the newly selected by keyboard fire the OnClick. It would be better to have the option of using the space bar or Ebter to fire the event. Then you can key rapidly down the tree and when you find the one you want hit space or Enter. Be nice to have a switch to Auto fire or by keyboard.
I note currently that if you hit Enter you get a script error at a getSubMenu() call in the client side script. Space bar does nothing.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi Arnold,
Thanks for the information. We will make sure to add the expand ancestor on both server and client side (and of course find out why the code you posted above does not work on the server side).
As for the client side OnClick, hitting enter and space bar to trigger OnClick is definitely the correct way to do. We will make sure it's implemented that way.
Thanks a lot for your valuable feedbacks!
|
|
Rank: Advanced Member Groups: Member
Joined: 8/4/2007 Posts: 42
|
Turned out the ServerSide expand code was my fault. It was a recursive routine and I called the ExpandAncestors before I actually added the node to the parent. Of course it couldn't set it. Duh! It works now.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi Arnold,
We have posted a new build that address the auto scroll issue. It aslo added expandPath method on TreeNode method. Please see your private message for download location.
Thanks
|
|