Looking at the source, it seems that the reason the sub-menu items display in rows is that they are specifically rendered as "tr" elements within a table. The only, very sad, hack I've found around this so far is to apply a style to all "tr" elements in your page that specify "display: inline" as a style. This will at least cause your sub-menu to appear horizontally. However, this of course means that you will need to apply a more specific style using a class or id to all other tr elements in your site to revert their rendering back to the natural state of "display: block". If you try to use a vertically-oriented menu control on a page using the same stylesheet , you run into problems because the Asp:menu control doesn't allow for specific classing of the tr and td elements it renders out. Anyway, just some thoughts that might provoke further discussion.
Later note --
Quick refinement. I would recommend setting the DynamicMenuStyle-CssClass property to the name of a class such as "Class1", then in the stylesheet, have a block that specifies that all tr tags within that class should be
displayed inline. This targets the style so it doesn't affect all tr tags. Source code example:
ASPX File
<asp:Menu ID="mnuTopNav" runat="server" Orientation="Horizontal" DynamicMenuStyle-CssClass="Class1" ></asp:Menu>
CSS File
.Class1 tr { display:inline; }