Hello,
since the expanding and selection of a submenu-item (my other post) in code behind (for ex. there are four levels and fourten nodes
A1000 -- A1100 -- A1110 -- A1111
| | -- A1112
| | -- A1113
| -- A1200 -- A1210
| -- A1220
| -- A1230
| -- A1240
B1000 -- B1100
C1000
is on the way to a never ending story (no solution realy work), i am looking for an other solution. My problem: each node in my example should load some content in a textarea, if the user select the node (or item); so if i click on A1200 --> expand the submenu (A1210, ...), load the contetent for 'A1200' and don't close the menu (stay where you are).
My first try was to sent the item-click to the server; in the item-value of the menu, i store the id of the record that i load via datareader and bind to the textarea.text.
But there is a postback and the mneu is closed. I found no way to open in code behind!
So is there a way to open/expand the menu to a special node (A1200 ??) on page load?
Any better solution??
Thanks
Patric
I am 100% sure what you are tyring achieve. Can't understand where is that text area - is it in the MenuItemTemplate or is it a separate control on the page. But the cleanest solution for me is to use the Client Side API for WebDataMenu. There is open method that each DataMenuItem has. So, when you load the content for your text area, you may want obtain an instance of WebDataMenuItem and then call its open method. This will cause the opening of the full path to where that item is (regardless of how deep it is in the menu hierarchy). You could use the resolveItem(address) method of the WebDataMenu client object to get instance of the item you wish to open. Other way of obatining an instance of WebDataMenuItem that you need to open after loading the content for your textarea is to handle the client side Click event of the WebDataMenu. The handler shall have two parameters:
function wdmItemClick(menu, eventArgs) { ... }
The eventArgs has method "getItem()" which will give direct reference to the client object instance for the clicked item. You can set it to a globally scoped variable and just call the open() method of that globally scoped variable when your content loads.
The main point is that you can't have menu staying opened when it loses focus. If your content loads fast enough, and you call open(), the menu may still stay openened. You can control to some extend the behavior. You may first want to set the CloseMenuOnClick property to false, then adjust the SubMenuClosingDelay to some higher value (value is in milli seconds) to keep the submenus opened for longer after losing focus (you want it to stay open during your content loading and after that).
Hope this helps!
Hello Anton,
first of all thanks for your fast and very detailed explanation. I try it and give you a feedback of my results.
I think i must my description more clear. I store the hierachical structure of the menu in a Sql Server table, load it via SqlDatasource and use the infragistics hierarchical datasource for the menu. The value - prop of each menu-item is used as the id-field of a row in an other table. In this table is some content stored (the text for the text area, a link for an image, ...). This content is loaded via datareader and i catch the value of the Clicked-item on server (code behind). The page uses two parts; one for the content, one for the menu. Click a menu item, then load and display the content and let the menu open. Sounds simple, right? But i can not open the menu in code behind; so i try to use the page load and the client side code.
You can take a look at http://www.sternenweg.net/detailseite.aspx