- - PR -
ASP.NETで階層メニューをつくるには
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-09-27 22:39
DBがOracleなら、階層取得ができますが、SQL Serverにはそのようなコマンドがないのでできません。
自分の環境は明記しましょう。そのほうが回答が早いですよ。 | ||||
|
投稿日時: 2004-09-28 09:29
jittaさん、返答ありがとうございます。
引用: ----------------------------------------------------------------------- DBがOracleなら、階層取得ができますが、SQL Serverにはそのようなコマンドが ないのでできません。 ----------------------------------------------------------------------- DBはSQL Serverを使用しています。 SQL Serverでは簡単に取得ができないということでしょうか? 簡単な方法以外でも構いませんので、ご教授お願い致します。 [ メッセージ編集済み 編集者: KIN 編集日時 2004-09-28 09:30 ] | ||||
|
投稿日時: 2004-09-28 21:06
私の投稿欄のしたにある「www」というリンクをクリック。
「.NET FrameworkおよびVS.NETに関するTips」の、上から3つめに「階層問い合わせの類似」があります。 転記(斜字体は、環境に合わせて書き換えること。その他にも、書き換えが必要な箇所あり)
ここで注意するのは、「外部制約をDbDataAdapter.Fillより前に追加してはいけない」ということ。そうすると、Fillメソッドが制約違反で失敗します。あ、なんか、他のスレッドに関係するような???もちろん、テーブルをクリアするときには、先に制約を削除します。 最後のwhileループは、「子があるデータ」をキューに格納することによって、再帰呼び出しをせずにデータを処理しています。「取り出した行の操作」のところで、階層型のクラスに代入していけばよいでしょう。その階層型クラスをASP.NETのカスタムコンポーネントとして作り、RenderメソッドでHTMLを作成するようにすれば一丁上がりです。 | ||||
|
投稿日時: 2004-09-29 19:06
jittaさん、ご返答ありがとうございます。
jittaさんのコードをコピペし、斜字体になっているところを わかる範囲で書き換えたのですが、コンパイルエラーが出ました。 下記のコードでコンパイルエラーが発生しました。 >adpt.SelectCommand.CommandText("SELECT * FROM HIERARCHICALTABLE") >adpt.Fill(dset, tbl) adptはSQLServerなのでsqldataadapterに書き換えましたが、 そこが原因でしょうか? >adpt.SelectCommand.CommandText("SELECT * FROM HIERARCHICALTABLE") 上記のコードでは「プロパティアクセスはプロパティに割り当てるか、 またはその値を使わなければなりません。」と出ています >adpt.Fill(dset, tbl) 上記のコードは「型’System.Data.DataTable’の値を'String'に変換できません。」 と出ています。 できればもう少しやさしいサンプルなどがあるとうれしいです。 | ||||
|
投稿日時: 2004-09-29 19:39
エラーメッセージが怒っているそのままです。 Stringを要求されているのです。 DbDataAdapter.Fill のヘルプを見て、 1番目の引数にDatasetを取り、2つ目の引数に○型を取るパターンを引けば自明です。 >できればもう少しやさしいサンプルなどがあるとうれしいです。 がんばってください。 | ||||
|
投稿日時: 2004-09-29 22:26
String型でしたね。テーブル名を入れましょう。
というか、ここも書き換えなければならないところですね。というより、第1引数だけでもいいかも。 で、DataTableのテーブル名と、SELECT文で持ってくるテーブル名は、一致させておく必要があります。 確かに、難しいかも。。。 難しいかも、だけど、使うところはもっと難しいので、これくらいでへこたれないでください^o^; [ メッセージ編集済み 編集者: Jitta 編集日時 2004-09-29 22:30 ] | ||||
|
投稿日時: 2004-10-01 21:35
別のところでも話題になっていたので、コントロールを作ってみました。
下の「www」のリンクから私のウェブページへいって、「ASP.NET でのプログラミングに関するTips」のページの、今のところ一番下。 使い方は、かなり難しいかも。。。 |