Thanks for your response Koen,
Yes, as for the ImageUrl for SelectedNodeStyle, it is an existing known
issue of the TreeView control, the dev team has recorded this for fixing in
future version. also, based on my test, when we use NavigationUrl for
TreeNode to act as hyperlink, the "SelectedNodeChanged" event won't get
fired for the TreeView which is also a problem. Currently what I have
tried is creating a cutsom Treeview class derived from the existing
Treeview, and I put some additional property to store Navigation Url, thus,
I can make all the Node as normal TreeViewNode(not hyperlink node) but use
my customTreeNode class, and in the Treeview's selectedNodechanged event, I
programmatically set Node's Url (reset original selectedNode's url) and
register client-script to do the navigation work. e.g:
Here is my custom Treeview and TreeNode's code:
===============================
namespace ControlLibrary
{
public class CustomTreeView : TreeView
{
protected override TreeNode CreateNode()
{
return new CustomTreeNode();
}
}
public class CustomTreeNode : TreeNode
{
private string _navurl;
public string NavUrl
{
get
{
return _navurl;
}
set
{
_navurl = value;
}
}
}
}
===========================
=========aspx page============
<cc1:CustomTreeView ID="TreeView1" runat="server" Target="main"
SelectedNodeStyle-ImageUrl="~/Images/nor.GIF"
OnSelectedNodeChanged="TreeView1_SelectedNodeChanged"
<SelectedNodeStyle ImageUrl="~/Images/nor.GIF"
BackColor="Lime" />
<Nodes>
<cc1:CustomTreeNode Text="New Node1" Target="main"
Value="New Node1" NavUrl="
http://www.asp.net">
<cc1:CustomTreeNode Text="New Node11" Target="main"
Value="New Node11" NavUrl="
http://www.asp.net/?id=1"></cc1:CustomTreeNode>
<cc1:CustomTreeNode Text="New Node12" Target="main"
Value="New Node12" NavUrl="
http://www.asp.net/?id=2"></cc1:CustomTreeNode>
</cc1:CustomTreeNode>
<cc1:CustomTreeNode Text="New Node2" Target="main"
Value="New Node2">
<cc1:CustomTreeNode Text="New Node21" Target="main"
Value="New Node21"></cc1:CustomTreeNode>
<cc1:CustomTreeNode Text="New Node22" Target="main"
Value="New Node22"></cc1:CustomTreeNode>
</cc1:CustomTreeNode>
<cc1:CustomTreeNode Text="New Node3" Value="New Node3">
<cc1:CustomTreeNode Text="New Node31" Value="New
Node31"></cc1:CustomTreeNode>
<cc1:CustomTreeNode Text="New Node32" Value="New
Node32"></cc1:CustomTreeNode>
</cc1:CustomTreeNode>
</Nodes>
<NodeStyle ImageUrl="~/Images/sel.GIF" />
</cc1:CustomTreeView>
===========code behind========================
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
string oldvaluepath = TreeView1.Attributes["oldnodepath"];
CustomTreeNode oldNode = TreeView1.FindNode(oldvaluepath) as
CustomTreeNode;
if (oldNode != null) { oldNode.ImageUrl =
TreeView1.NodeStyle.ImageUrl; }
TreeView1.SelectedNode.ImageUrl =
TreeView1.SelectedNodeStyle.ImageUrl;
TreeView1.Attributes["oldnodepath"] =
TreeView1.SelectedNode.ValuePath;
string script = @"<script language='javascript'>
window.parent.frames['{0}'].location.href = '{1}';
</script>";
CustomTreeNode node = TreeView1.SelectedNode as CustomTreeNode;
Page.ClientScript.RegisterStartupScript(this.GetType(),
"TreeView_Select_Script",
string.Format(script, node.Target, node.NavUrl ));
}
==============================
Yes, this is quite abit complex and not very elegant, however, we're
limited to the existing interfaces.
also, sorry for the inconvenience this brings you.
Regards,
Steven Cheng
Microsoft Online Community Support
==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.