by Moheb Missaghi
Sep 7, 2005
Page 1 of 3
Use existing controls to simulate a custom menu. In their popular ASP.NET book, Alex Homer and Dave Sussman, et. al. present a case study that creates an XML-based menu using a DataList server control. Their menu works fine for menus one or two levels deep; however, nesting DataList controls to create menus of arbitrary depth is not trivial. For an arbitrary depth menu I've found it's better to use a TreeView control (from Microsoft's downloadable IE Web Controls, binding it to an XML file containing the hierarchal menu. The TreeNode element that makes up the individual items of this control can contain children of its own type, letting you nest elements to any arbitrary depth. Using a TreeView works fine for Windows Explorer-like GUIs, but severely limits the styles you can produce unless you are willing to re-write the code-behind that renders the control. Furthermore, all events raised by this control are processed on the server by default, which requires server trips for actions that you'd expect to happen on the client, such as selecting, expanding and collapsing nodes.
A New Approach
To present the menu hierarchy in a simple form such as an XML schemasimilar to that in the TreeView control, allowing arbitrary depth with minimal and straight-forward modification.