• 締切済み

TreeViewの制御について

TTTABの回答

  • TTTAB
  • ベストアンサー率100% (2/2)
回答No.1

こんばんわ (1)マスターページ内のプロパティにポストバックは存在しませんか? もしあれば、ポストバック処理を記述してあげるのが第一のイメージです。 (2)こちらも上記同様ですが、マスターページのtreeviewという指定がロジック上で可能かと思われます。 マスターページのtreeviewのenable=falseによって制御ができそうなイメージです。 でも、上記はきっと試してますよね? 役にたたなかったらすみません。

dekatyo
質問者

補足

ご返答ありがとうございます。 (1)ですが、TreeViewのプロパティを見る限りだと、ポストバックの設定は無いようです。 TreeViewからメニュー選択→選択されたコンテンツページの各Load処理→ マスターページの各Load処理(メニュー生成)→画面表示 という流れで動いてしまっているのが問題のようなのですが・・・ 仕様上マスターページを外すことができないのです(汗 (2)ですが、クライアントにてコンテンツページのボタン押下で、 Javascriptでdisabled制御をかけ、非活性にすることはできました。 しかし、非活性になってはいるのですが、TreeViewの各リンクは押せてしまうという変な状態になってしまいます。 引き続き、お知恵をお貸しくださいませ。

関連するQ&A

  • TreeViewの再表示のちらつきをなくす方法

    お世話になっております。 VB2005でWinアプリ開発中です。 テキストボックスに条件を入力し、ボタンを押下すると、 TreeViewに該当データのノードを設定し、 ノードを展開した状態で表示する処理があります。 ノードが展開表示されている状態で、ボタンを押下し 新しい情報を再表示すると、 ノードが折りたたまれて展開されたというような動きが見えてしまいます。 SuspendLayout/ResumeLayoutを入れてみたのですが、変化無しでした。 ノードが展開された状態で、パッと再表示するには、 どのようにすればよいのでしょうか? よろしくお願いします!

  • TreeViewについて

    TreeViewを使う場合、その管理情報(親ノードのIDとかKeyとか。。子ノードの情報とか、、)をテーブルに保存しておくと便利な気がするのですが、TreeViewを使う場合の基本(テーブル作成時)みたいなのを教えてもらえませんでしょうか?

  • C# TreeView 効率良いノード追加の仕方

    C# TreeViewについて質問させてください。 ノード(子ノード含む)を数万件以上登録する際に、効率の良い方法を教えて頂けないでしょうか? 実際のコードとは異なりますが、大まかに以下のような処理をメインスレッドで行っています。 class MyTreeNode : TreeNode{   void AddNode(){     BeginUpdate();     SuspendLayout();     foreach( var 親ノード情報 in 親ノード情報リスト ){       TreeNode parentNode = new TreeNode( 親ノード名 );       foreach( var 子ノード情報 in 子ノード情報リスト ){         TreeNode childNode = new TreeNode( 子ノード名);         parentNode.Nodes.Add( childNode );       }       this.Nodes.Add( parentNode );     }     ResumeLayout();     EndUpdate();   } } この方法ですと、かなり時間がかかってしまい、UIが固まったようになってしまいます。 (TreeViewに、子ノードの一斉展開機能が必要なので、親ノード展開時のイベントを拾って  子ノードを追加する方法は上記と同じく遅くなってしまうのではと思っていますがどうなんでしょうか?)

  • VS treeviewをIndex指定で展開

    お世話になります VS2010 C++/CLIで開発しております treeviewの+-展開閉をプログラム側で制御したいのですが、教えていただけないでしょうか。 自分でググって。ノード名で指定する方法は判ったのですが、 今回教えていただきたいのはIndexで指定して開閉する方法となります。 機能としては、複数の親ノードに対して、初期値として、初めから展開して居る物と、 閉じている物を起動時&リセット時に設定して、その状態で表示する。

  • ASP.NET2.0 TreeView チェックボックス

    皆様、お世話になります。 長田と申します。 環境はASP.NET2.0です。 1.新規にWebフォームを作成して、その中にTreeViewとボタンを作成します。 2.TreeViewはチェックボックスを持つように設定。 3.ボタン押下時にTreeViewの中でチェックボックスを選択されているものを取得して、ラベルに表示。 ネットにてサンプルを見つけたのですが、C#なため解読できません。(泣く VB.NETでしたらどのようになりますでしょうか宜しければご教授頂きたく思ってます。 ご指導お願い致します。 TreeViewイメージ □大分類A  □中分類1   □小分類1   □小分類2   □小分類3  □中分類2   □小分類1   □小分類2   □小分類3 □大分類B  □中分類1   □小分類1 コード(※ツリービューを作る所は省略) //ボタン押下時 protected void Button1_Click(object sender, EventArgs e) {   System.Text.StringBuilder sb = new System.Text.StringBuilder();   //大分類   sb.Append(SelectNode(TV1.Nodes));   foreach (TreeNode tn in TV1.Nodes)   {     //中分類     sb.Append(SelectNode(tn.ChildNodes));     foreach (TreeNode tn2 in tn.ChildNodes)     {       //小分類       sb.Append(SelectNode(tn2.ChildNodes));     }   }   Label1.Text = sb.ToString(); } //ノードに日もづく子ノードで且つ選択されているものを取得 public static string SelectNode(TreeNodeCollection tnc) {   System.Text.StringBuilder sb = new System.Text.StringBuilder();   foreach (TreeNode tn in tnc)   {     if (tn.Checked)     {       sb.Append(tn.Text);     }   }   return sb.ToString(); }

  • ツリービューのノードをダブルクリックしたことを判断させるには

     VBにて、ツリービューのノードをダブルクリックしたときにこうする、というような処理をさせるにはそうすればいいんでしょうか。  TreeView1_NodeClickというのはありますが、ダブルクリックに関してはDblClickだけしか存在せず、どのノードを選択したかを取得できません。  どなたか、TreeView1_NodeClickのようにノードをダブルクリックした時に限り、そのノードを取得して処理をさせるというような方法を教えてください。  よろしくお願いします。

  • NN4.7でボタン制御は可能でしょうか?

    毎回お世話になっております。 現在、仕事でWebページを作成しているのですが、そのWebページの推奨がIE5.0、NN4.7以上になっております。 今、作業で困っていることはNN4.7でボタンの制御ができないことです。 IEだと「disabled」で制御ができるのですが、NN4.7だと使用不可になっているので使えないです。 検索エンジンで調べても良い例がみつからなかったので、投稿いたしました。 なにか良い案・HPがありましたら、ご回答のほどよろしくおねがいいたします。

  • マスターページの値の渡し方について。

    すごく初歩的な質問かもしれませんが、教えてください。 Visual Web Developer 2008を使用しています。 言語はVBです。 マスターページ:masterpage.master データ表示ページ:datalist.aspx(マスターページはmasterpage.master) マスターページにツリービューがあり、それをクリックすると、データベース内を検索し、該当するものをリストとして表示するのがデータ表示ページになります。 その際の処理として、どのノードがクリックされたかの情報をクエリ文字列にてデータ表示ページに送っていましたが、そうするとポストバックが起きずに、展開されたノードは初期の状態に戻ってしまいます。 抽出したデータを表示させつつも、ツリービューは選択された状態を維持させたいのです。 そこで、いろいろ考えてみたのですが、 1:マスターページに隠しテキストボックスを置き、その中に格納された値を、データ表示ページからFindControlで取得する 2:グローバル変数を使う   ただ、グローバル変数が使えるのか、また使用方法等はまだ調べていません。 3:Friend Sharedを使う   これはグローバル変数とは違うものなんですかね・・・?    いろいろ調べてみたのですが、グローバル変数は宣言する場所がどこなのかわからないという、自分でも情けない状態です。 Friend Sharedの使用方法も微妙です・・・。 隠しテキストボックスを作るやり方は簡単にテストしたらできましたが、極力変数として値を渡す方法でやりたいと思っているので、最終手段にしようと思っています。 目的はノード展開状態の維持なのですが、マスターページからデータ表示ページに値を渡すという流れはそのままでいきたいと思っています。 ポストバック時はノードの展開状態が維持されるとどこかに書いてあったので、ポストバックさせつつ値を渡すのがいいのでは、と思っています。 ご存知の方がいましたら、ヒントでもなんでもいいので教えてください。 足りない情報等は補足いたします。 よろしくお願いします。

  • ツールボタンの制御について

    メールソフトやテキストエディタなどで編集系ボタン(切り取り 貼り付け、コピー、元に戻すなど)のツールボタンがある時 クリップボードとかにデータがなければ貼り付けが使用 できない(Enabled = false)とかになっていたりしますが これはどこのイベントで制御しているのでしょうか? DelphiだとTActionList(だったかな?)のようにメニューの イベントと連動して出来たのですが、C#ではどうすれば 良いのでしょうか? 現状は無理やりタイマーコントロールでクリップボードとか テキストボックスの選択文字数を監視してツールボタンの 有効/無効を切り替えています。

  • DelphiのTreeViewでの+ボタンの出し方

    WindowsXP、Delphi2009で開発しています。 TTreeViewのAdvancedCustomDrawItemで下記の様に動的にノードの描画を行っていますが、ノードを展開・折りたたみする際に使う+ボタンが表示できなくて困っています。 +ボタンを表示させる方法が分かる方、ご教示願います。 ------------------------------------------------------------ procedure TForm3.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean); var Rect :TRect; begin defaultdraw := false; Rect := Node.DisplayRect(True); if Node.Selected = true then begin Sender.Canvas.Font.Color := clWhite; end else begin if Copy(Node.Text,pos('\',Node.Text) + 1, length(Node.Text)) = 'False' then begin Sender.Canvas.Font.Color := clWindowText; end else begin Sender.Canvas.Font.Color := clRed; end; end; Sender.Canvas.TextOut(Rect.Left,Rect.Top,Copy(Node.Text,1,pos(',',Node.Text) - 1)); end; ------------------------------------------------------------