C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 選択しているTreeNodeに目印をつける。


(過去ログ 49 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■26962 / inTopicNo.1)  選択しているTreeNodeに目印をつける。
  
□投稿者/ ぽっち (81回)-(2008/10/23(Thu) 22:14:39)

分類:[ASP.NET (C#)] 

こんばんは、いつもお世話になっております。
現在、何度かこちらで質問させて頂いているのですが・・・
ツリーコントロールを使った掲示板を作っております。

見た目・仕組みとしましては、フレーム(左右分かれるタイプ)で作成しており、左がツリー表示の記事一覧、右側がクリックされた記事を表示・編集・新規作成・削除などをするページで構成しております。


そこで左側メニューで選択したものを右に表示させるという動作は、出来ているのですが、
選択したノードがどれなのかを色を付けるか「←」などの記号を付けたいのです。
それにより、ユーザが今どの記事を見ているのかなどを判りやすくしたいが為なのですが・・・。


それで調べた所、aspx側のTreeViewのタグ以下でデザイン定義をする

<SelectNodeStyle BackColor="Pink" 〜〜〜〜・・・ />

で選択されたノードの背景の色を変えるというのは判ったのですが、
C#側の方で、各ノードにはリンクをつけているんですけれど、
リンクをつけると全然SelectNodeStyleが効かなくなってしまいます。

これに関しても調べたのですが、

rootnode[rootcount].NavigateUrl= PagePath.test; //test.aspxへのリンク

のようにNavigateUrlを使うとSelectNodeStyleが無効になるバグ?と海外のサイトで載っていました。

そこで何とか方法はないものか・・・と現在困っております。
何か対策、上記でのバグ回避など方法ありましたらご教授くださいますようお願い致します。
またこれ以外でも、左ツリー部のどれか記事を選択したら、わかりやすくクリックした記事に色や文字が太くなるなど色々方法ありましたら教えてくださると幸いです。



最後に前にも記載してましたが、変更点も含めた現状のソースの一部を載せておきます。
宜しくお願いします。



一部ですがcsソースとしては以下の通りです。

//カテゴリ取得用ノードの初期設定
TreeNode[] rootnode = new TreeNode[categories.Rows.Count + 1];
for (int i = 0; i < categories.Rows.Count + 1; i++)
{
rootnode[i] = new TreeNode();
}
int rootcount = 0;

foreach (DataRow category in categories.Rows)
{
rootnode[rootcount].Text = (String)category["CategoryName"];
rootnode[rootcount].Target = "bbsdetail"; //Frameの右側表示指定
rootnode[rootcount].NavigateUrl = PagePath.Category; //Category(親)記事をクリックしたら飛ぶ

// サブカテゴリ一覧を取得
DataTable subCategories = ch.GetCategoryList((int)category["CategoryID"]);

//サブカテゴリ取得用ノードの初期設定
TreeNode[] subnode = new TreeNode[subCategories.Rows.Count + 1];
for (int y = 0; y < subCategories.Rows.Count + 1; y++)
{
subnode[y] = new TreeNode();
}
int subcount = 0;
foreach (DataRow subCategory in subCategories.Rows)
{
//subnodeにカテゴリーの名前を格納
subnode[subcount].Text = (String)subCategory["CategoryName"];
subnode[subcount].Target = "bbsdetail";
subnode[subcount].NavigateUrl = PagePath.SubCategory;

// トピック一覧を取得
TopicHelper th = new TopicHelper();
DataTable topics = th.GetTopicListData((int)subCategory["CategoryID"]);

//トピック取得用ノードの初期設定
TreeNode[] topicnode = new TreeNode[topics.Rows.Count + 1];
for (int z = 0; z < topics.Rows.Count + 1; z++)
{
topicnode[z] = new TreeNode();
}
int topiccount = 0;

foreach (DataRow topic in topics.Rows)
{
//topicnodeにトピックの名前を格納
topicnode[topiccount].Text = (String)topic["Title"];
topicnode[topiccount].Target = "bbsdetail";
topicnode[topiccount].NavigateUrl = PagePath.Topic + topic["TopicID"] + "&rowindex=" + (topiccount+1); //トピック行の何行目にある記事であるかを取得しながら次のページへ遷移

//if:トピックがある場合は、子供のノードを追加。
//else:トピックが無い場合は、子供のノードを追加しない。
if (!topicnode[topiccount].Value.Equals(""))
{
subnode[subcount].ChildNodes.Add(topicnode[topiccount]);
}
topiccount++;
}
//if:サブカテゴリがある場合は、子供のノードを追加。
//else:サブカテゴリが無い場合は、子供のノードを追加しない。
if (!subnode[subcount].Value.Equals(""))
{
rootnode[rootcount].ChildNodes.Add(subnode[subcount]);
}
subcount++;
}
//データをツリーに追加する。
tree.Nodes.Add(rootnode[rootcount]);
rootcount++;
}







引用返信 編集キー/
■26965 / inTopicNo.2)  Re[1]: 選択しているTreeNodeに目印をつける。
□投稿者/ ま (143回)-(2008/10/24(Fri) 01:34:23)
TreeViewとこのHTML見せてください。
サーバーじゃなくてクライアントのHTMLです。

BackColorがダメなら、CSSとか色々手はあると思いますが確認しましたか?


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -