现在这个树是必须点击树前点的“+”才能打开子节点,我想点击树的名称就能打开子节点。 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Searconditions();
}
}
protected void Open(object sender, EventArgs e)
{
Response.Write(e.ToString());
}
//查询导航加载到树中
private void Searconditions()
{
List<PurviewDetail> nidList = Session["nidList"] as List<PurviewDetail>;
if (nidList != null)
{
for (int i = 0, leng = nidList.Count; i < leng; i++)
{
Navigate n = NavigateBLL.Select(nidList[i].nid);
if (n != null)
{
TreeNode rootnode = new TreeNode();
rootnode.Value = n.nid.ToString();
rootnode.Text = n.nodeName;
rootnode.NavigateUrl = n.nurl=="#"?"javascript:opnodes(this)":n.nurl;
rootnode.Collapse();
Searchallnavg(n.nid.ToString(), rootnode);
}
}
}
else
{
Response.Redirect("login.aspx");
}
}
//递归
void Searchallnavg(string nid, TreeNode rootnode)
{
string where2 = string.Format("treeNode='{0}'", nid);
List<Navigate> slist = NavigateBLL.Select(where2, "treeNode", true, false);
if (slist.Count!=0 && slist!=null)
{
foreach (Navigate nag in slist)
{
TreeNode treenode = new TreeNode();
treenode.Text = nag.nodeName.ToString().Trim();
treenode.Value = nag.nid.ToString().Trim();
treenode.NavigateUrl = nag.nurl == "#" ? "javascript:opnodes(this)" : nag.nurl;
treenode.Collapse();
rootnode.ChildNodes.Add(treenode);
Searchallnavg(nag.nid.ToString(), treenode);
}
TreeView1.Nodes.Add(rootnode);
}
}
/// <summary>
/// 树的展开后激发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
Pramp.OpTree = e.Node;
}
/// <summary>
/// 选中节点更改后激发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TreeView1_SelectedNodeChanged1(object sender, EventArgs e)
{
if (this.TreeView1.SelectedNode.ChildNodes.Count > 0)
{
this.TreeView1.ExpandAll();
this.TreeView1.SelectedNode.Expand();
}
}
/// <summary>
/// 在节点的选中状态后更改激发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TreeView1_TreeNodeCheckChanged1(object sender, TreeNodeEventArgs e)
{
if (this.TreeView1.SelectedNode.NavigateUrl=="#")
{
e.Node.Expand();
}
}
{
if (!IsPostBack)
{
Searconditions();
}
}
protected void Open(object sender, EventArgs e)
{
Response.Write(e.ToString());
}
//查询导航加载到树中
private void Searconditions()
{
List<PurviewDetail> nidList = Session["nidList"] as List<PurviewDetail>;
if (nidList != null)
{
for (int i = 0, leng = nidList.Count; i < leng; i++)
{
Navigate n = NavigateBLL.Select(nidList[i].nid);
if (n != null)
{
TreeNode rootnode = new TreeNode();
rootnode.Value = n.nid.ToString();
rootnode.Text = n.nodeName;
rootnode.NavigateUrl = n.nurl=="#"?"javascript:opnodes(this)":n.nurl;
rootnode.Collapse();
Searchallnavg(n.nid.ToString(), rootnode);
}
}
}
else
{
Response.Redirect("login.aspx");
}
}
//递归
void Searchallnavg(string nid, TreeNode rootnode)
{
string where2 = string.Format("treeNode='{0}'", nid);
List<Navigate> slist = NavigateBLL.Select(where2, "treeNode", true, false);
if (slist.Count!=0 && slist!=null)
{
foreach (Navigate nag in slist)
{
TreeNode treenode = new TreeNode();
treenode.Text = nag.nodeName.ToString().Trim();
treenode.Value = nag.nid.ToString().Trim();
treenode.NavigateUrl = nag.nurl == "#" ? "javascript:opnodes(this)" : nag.nurl;
treenode.Collapse();
rootnode.ChildNodes.Add(treenode);
Searchallnavg(nag.nid.ToString(), treenode);
}
TreeView1.Nodes.Add(rootnode);
}
}
/// <summary>
/// 树的展开后激发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
Pramp.OpTree = e.Node;
}
/// <summary>
/// 选中节点更改后激发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TreeView1_SelectedNodeChanged1(object sender, EventArgs e)
{
if (this.TreeView1.SelectedNode.ChildNodes.Count > 0)
{
this.TreeView1.ExpandAll();
this.TreeView1.SelectedNode.Expand();
}
}
/// <summary>
/// 在节点的选中状态后更改激发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TreeView1_TreeNodeCheckChanged1(object sender, TreeNodeEventArgs e)
{
if (this.TreeView1.SelectedNode.NavigateUrl=="#")
{
e.Node.Expand();
}
}
我测试了一下。如果我把数据库里的URL地址(也就是“#”)删除。那么点击文字就可以了。可是如果那样的话。折叠起来了!!!
自己去寻找一个你可以用的
因为不是所有的父级菜单都有子菜单的
1.把帖子发到JS区去,去找一个JS的Tree控件,很多的。
2.用SliverLight来做。ASP.net的控件都是服务器端的。如果只是为了展开,收拢树节点在服务器端编码,效率太低了,即使使用AJAX,也感觉很不好。