4

プラットフォーム:
C#を使用したASP.NET 4.0(Webforms)でのWebサイト開発。

状況:
レンダリングされたASP.NETメニューコントロールは水平で、3つのレベルのデータがあります。そして、StaticDisplayLevels = "1"を設定して、メニューにレベル1のデータが水平に表示され、レベル1のマウスオーバーが表示されるようにしました。メニューには、レベル2のデータとレベル2のマウスオーバーが表示され、メニューにはレベル3のデータが表示されます。

要件:
レベル2とレベル3のデータを単一のリストに表示し、最初のレベル2の子(存在する場合)が最初のレベル2データの下に表示されるようにする。次に、2番目のlevel2とその子(存在する場合)などが続きます。

最初のようなディスプレイが必要です。 ASP.NETメニューコントロールは2番目のようなものを表示します上の画像を考えてみましょう。私が欲しいのは、左のようなディスプレイです。ただし、ASP.NETメニューコントロールは、右側の画像のようにレンダリングします。

私は解決策をネットで高低で検索しました。MenuのDataBoundイベントを使用して、生成されたasp.netコントロールのマークアップを置き換えてから、それにjavascriptハックを挿入してみました。成功しましたが、再利用性に欠けています。

私が欲しいのは、メガドロップダウンのように機能する動的レベル1の後に静的レベル2(およびレベル3)を使用して再利用可能なASP.NETメニューコントロールを実装する方法です。私は道があるべきであり、私は間違った道を進んでいると確信しています。何か案は?

4

2 に答える 2

0

メニューコントロールのmenudisplaylevelを3に設定しておく必要があります。これを確認してください

MaximumDynamicDisplayLevels="3"

<asp:Menu ID="Menu1" runat="server" StaticDisplayLevels="1" 
MaximumDynamicDisplayLevels="3" DataSourceID="SiteMapDataSource1" 
Orientation="Horizontal" OnDataBound="Menu1_DataBound">
</asp:Menu>
于 2011-02-28T03:31:50.007 に答える
0

簡単な解決策を得ることができませんでした。

回避策は、これにより、階層サイトマップが親xmlの親IDと、親がない場合は0のテーブルになりました。次に、そのデータからコードビハインドでasp:Menuをプログラムで作成しました

于 2011-03-14T13:13:12.883 に答える