- - PR -
ASP.NETで階層メニューをつくるには
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-09-17 09:55
初めて投稿させて頂きます。
OS:Windows2000 開発言語:ASP.NET DB:SQLServer ASP.NETで階層メニューを作るにはどうしたらよいのか わかりません。 階層メニューのイメージとしては ■テーブル定義 ID 親ID ラベル 1 NULL 親項目1 2 NULL 親項目2 3 1 子項目1−1 4 2 子項目2−1 5 1 子項目1−2 6 5 孫項目1−2−1 7 2 子項目2−2 8 4 孫項目2−1−1 ■表示イメージ 親項目1 ├−子項目1−1 ├−子項目1−2 └−孫項目1−2−1 親項目2 ├−子項目2−1 │ └−孫項目2−1−1 └−子項目2−2 ■動作 親項目をクリックすると子項目が開き、 子項目をクリックすると孫項目が開くメニュー 動作イメージサンプルURL http://www.city.shiojiri.nagano.jp/Contents/Menu.asp?KUBUNNO=4 上記のような感じで作りたいのですが、 参考になるサイトなど、ご教授お願い致します。 |
|
投稿日時: 2004-09-17 10:27
メニューを開いたときにPostBackを発生されるのかどうかによって作り方が異なります。
おそらくPostBackさせないほうがイイと思うのでクライアントスクリプトで実装することになります。 市販のTreeViewとか使っても実現できると思いますが、自作するのもそこまで難しくないと思います。 ちなみにASP.NETは言語ではありません。 |
|
投稿日時: 2004-09-17 10:35
http://gotdotnet.com/Community/UserSamples/Default.aspx?query=Tree%20View%20Server%20control
適当に検索してたら見つけました。 これなんかどうでしょうね。 検索してみると他にも良いのが見つかるかも。 |
|
投稿日時: 2004-09-17 11:07
burton999さん、一郎さん、ご返答ありがとうございます。
>ちなみにASP.NETは言語ではありません。 失礼しました。ASP.NETはフレームワークのことですよね。 言語はVB.NET2002です。 一郎さんのリンク先のサンプルをダウンロードしてソースを見ましたが、 C#で書かれていました。 TreeViewというのはVB.NETでも使うことはできるのでしょうか? |
|
投稿日時: 2004-09-17 22:52
ご呈示のページの、「ソースを表示」は行いましたか?それが一番のお手本だと思うのですが。
軽く説明しておくと、CSSのDISPAYをつかいます。最初に、「こうしたい」というのを、そのまま書いておきます。それから、階層ごとにDIV要素で囲み、IDを振ります。クリックされると、該当するIDの要素を探し、STYLE属性を探して、DISPLAYにアクセスし、変更します。 |
|
投稿日時: 2004-09-21 09:45
Jittaさん、ご返答ありがとうございます。
Jittaさんの教えてくださいました方法で試してみます。 |
|
投稿日時: 2004-09-21 12:39
おじゃまします。
ここでVisual Studio 2005 を持ってくるのは何ですが、参考までに・・・・ VS2005ですと、階層メニューは簡単にできてしまいます。(例によって「簡単に」の表現を使ってますが・・・・) メニューそのものは、XMLファイルで作成し、メニュー形式のプロパティを、Windows Help形式にするだけです。 |
|
投稿日時: 2004-09-27 10:15
こんにちは。
便乗ですみませんが、私もバッドマンさんと同じようなテーブル定義で 階層メニューを作成しようとしています。 下記のテーブル定義からどのようなSQLでデータを取得すれば作りやすいか、 皆様私にもご教授ください。 引用: ----------------------------------------------------------------------- ■テーブル定義 ID 親ID ラベル 1 NULL 親項目1 2 NULL 親項目2 3 1 子項目1−1 4 2 子項目2−1 5 1 子項目1−2 6 5 孫項目1−2−1 7 2 子項目2−2 8 4 孫項目2−1−1 ----------------------------------------------------------------------- 環境はWindows2000 SP4 言語はVB.NETを使用しています。 開発歴は1ヶ月程度です。 |