- - PR -
TreeViewにディレクトリを一覧で表示する
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-02-06 15:23
お世話になります。
TreeView にあるフォルダー以下のフォルダーを表示しようと思い下記のようにしましたが、階層1つ下はOKですがその下(2つ下)が表示できません。 TreeView1_SelectedNodeChanged1() が呼ばれた時に、1つ下は、OKですが2つ下のときnull になっています。どこがおかしいのでしょうか?教えてください。 下記は、 Page_load() から string _virtualImageRoot = string.Empty; DirectoryInfo rootFolder = new DirectoryInfo(Server.MapPath(_virtualImageRoot)); DirectorySearch(/*rootFolder.FullName*/"C:\\"); で呼んでいます。ルートでも現フォルダー以下でも同じです。
ASP.NET2.0 C# VS2005
[ メッセージ編集済み 編集者: SL 編集日時 2009-02-06 15:24 ] | ||||||||
|
投稿日時: 2009-02-06 16:00
Web アプリケーションですよね?
あと VS2005 でしょうか。 こちらでは動きましたが・・・。 まさか TreeView1_SelectedNodeChanged1 の末尾の「1」が関係しているとか 型名が「sring」となっている箇所のせいだとか言わないですよね・・・。 | ||||||||
|
投稿日時: 2009-02-06 16:18
こんにちわ。
ちょっと気になるんですが・・・ どういう仕様なんでしょう? クリックしたら、一階層下のディレクトリ等の一覧が表示されるなら、Kingさんのおっしゃるとおりできていると思います。 初期表示でディレクトリ階層をすべて表示するならできていないと思います。
どのような操作をしたときにうまく表示できないのか、 ご説明いただいたほうが良いかと思います。 | ||||||||
|
投稿日時: 2009-02-06 16:27
お世話になります。
> こちらでは動きましたが・・・。 すみません。「そのさらに下が表示しません。」の間違いでした。 > TreeView1_SelectedNodeChanged1 の末尾の「1」が関係しているとか これは、このハンドらが呼ばれているのでいいと思います。 > 型名が「sring」となっている ->[string] は、パス名取得で、うまく開くときは、パス名が正しく取得できています。 失敗するときは、null になっています。 アプリケーション上の表示は、[defg]をクリックすると[abc]表示に戻ってしまう。
> 初期表示でディレクトリ階層をすべて表示するならできていないと思います 結果としてすべての階層を取得したいのですが、実際表示するのは、このアプリが動いているフォルダー「親として」それ以下すべてのサブです。クリックでExpandしたい。 [ メッセージ編集済み 編集者: SL 編集日時 2009-02-06 16:30 ] | ||||||||
|
投稿日時: 2009-02-06 16:29
ちなみにそのコードだと、 1. あるフォルダを選択 2. 別のフォルダを選択 3. もう一度、1.のフォルダを選択 の操作で子ノードがどんどん増えていきますね。 | ||||||||
|
投稿日時: 2009-02-06 17:09
こちらでは4階層下の末端のフォルダまで表示されましたが・・・。
ただし展開していくたびにルートフォルダのノードが一番下にどんどん追加されていきます。 あと気になる事。 ・フォルダが表示されないタイミングのデバッグを1行1行見ていってもわからないのか。 ・フォルダ名のせいではないか。(HTML Encoding的な) ・「そのさらに下が表示しません。」の「そのさらに下」にはフォルダが存在しないのではないか。 ・展開するたびに増えるルートフォルダのノードを見ているのではないか。 実際こちらでは動いているので環境の違いだとしか思えません。 | ||||||||
|
投稿日時: 2009-02-06 21:34
お世話になります。
> 展開していくたびにルートフォルダのノードが一番下にどんどん追加されていきます この言葉をヒントに理由がわかりました。 ポストバック時に毎回呼ばれていることが原因のようです。下記のようにすることで下の階層まで表示するようになりました。こちらの環境では、一番下にどんどん追加されると言ったことが起きなくて見た目変化がなかったため気づきませんでした。 環境は、ASP.NET2.0 C# VS2005 パソコンは、Vista sp1 です。 うまくいったのですが、これを見栄え良くするため各階層化のノードを単一のフォルダー名にしたいのですがどうしたらいいでしょうか? 今は、どのノードもフルパスでとても見ずらいです。 今の仕様だとノードを取得して文字列に変換し次を探しています。同じものを List か Array などに保管して作業すべき?ノードからパスをつなぎ合わせるの? 通常のやり方を教えてください。お願いします。
|
1