0

Suckerfish css メニューと Jquery を使用してテーブルからメニューを作成しようとしています。私はこれを参照として使用しています: ASP.NET と JQueryを使用した Suckerfish メニューと、手動で提供されたリンク (記事のように) を使用しています。

私が問題を抱えているのは、データベースからメニュー項目を取得し、適切な階層に新しいメニュー項目を作成する再帰関数を作成することです。私のデータベーステーブルは次のようになります:

テーブルメニュー


MenuID ParentID リンク テキスト

アイテムが親レベルのアイテムである場合、MenuID と ParentID は同じであり、子の場合は ParentID フィールドに親の MenuID が含まれるという考えです。親のすべての子を調べて見つけることができる関数を作成する必要があります (いくつかのレベルになる可能性があります)。次のような手動エントリを置き換えます。

        Dim Foo As New MenuItem("#", "Foo", Me)
        Items.Add(Foo)
        Foo.Items.Add(New MenuItem("#", "1", Me))
        Foo.Items.Add(New MenuItem("#", "2", Me))
        Foo.Items.Add(New MenuItem("#", "3", Me))
        Foo.Items.Add(New MenuItem("#", "4", Me))

私は必要に応じてデータベースのテーブル構造を変更し、基本的にこれを実現するために他のことを何でもします。

ご意見をお寄せいただきありがとうございます。

4

1 に答える 1

2

階層データを表現するこの方法は、人間にとって理解しやすいものですが、完全な階層を抽出するには再帰が必要になるため、データを抽出するのは困難です。一部の種類の SQL には、これを実行するコマンドがありますが、それが舞台裏で行われています。

More Trees & Hierarchies in SQLを読み、説明されているマテリアライズド パス メソッドを使用してスキーマを再構築することをお勧めします。クエリを実行するのは簡単で、スケーリングも非常にうまくいきます。

于 2008-11-26T19:00:48.347 に答える