从数据库读取出来的菜单(动态菜单),如何实现,点击菜单前面的+/-或点击该菜单的图片,或者点击文字都可以自动打开或者收缩菜单呢?现在就只能点击+/-才能打开和收缩..郁闷中...请教高手..附上
代码如下:请高手指点,最好能有源代码...<%@ Page Language="C#" AutoEventWireup="true" CodeFile="数据库动态树型菜单-Tree.aspx.cs" Inherits="Tree" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="tvMenu" Font-Size="12px" runat="server" BackColor="#E0E0E0" CollapseImageUrl="~/Tree/Plusbox.gif" ExpandDepth="1" ExpandImageUrl="~/Tree/Minusbox.gif" NodeIndent="10" NoExpandImageUrl="~/Tree/Minusbox.gif" ShowLines="True" Width="202px" LineImagesFolder="~/TreeLineImages" OnSelectedNodeChanged="tvMenu_SelectedNodeChanged">
<ParentNodeStyle Font-Bold="False" ImageUrl="~/Tree/hintBehavior.gif" />
<HoverNodeStyle BackColor="#8080FF"
Font-Underline="True" Font-Size="Larger" />
<SelectedNodeStyle Font-Underline="True" HorizontalPadding="0px" VerticalPadding="0px" BackColor="#FFE0C0" />
<RootNodeStyle ImageUrl="~/Tree/22.gif" />
<NodeStyle Font-Names="Verdana" Font-Size="12pt" HorizontalPadding="0px"
NodeSpacing="0px" VerticalPadding="0px" />
<LeafNodeStyle ChildNodesPadding="0px" ImageUrl="~/Tree/iconedit.GIF" />
</asp:TreeView>
</div>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class Tree : System.Web.UI.Page
{ SqlConnection Conn = new SqlConnection("server=LOO;database=Tree;uid=sa;pwd=immenseloo");
DataSet ds = new DataSet(); protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ this.createDataSet();
this.InitTree(tvMenu.Nodes, "0");
}
}
private void createDataSet()
{ try
{
Conn.Open();
string sqlStr = "select * from tbTree ";
SqlDataAdapter cmdSelect = new SqlDataAdapter(sqlStr, Conn);
cmdSelect.Fill(ds, "Tree");
}
catch (Exception ex)
{
Response.Write(ex.ToString());
Response.End();
}
finally
{
Conn.Close();
} }
protected void InitTree(TreeNodeCollection Nds, string parentId)//用递归方法动态生成节点
{
DataView dv = new DataView();
TreeNode tmpNode;
dv.Table = ds.Tables["Tree"];
dv.RowFilter = "ParentId=" + "'" + parentId + "'";
foreach (DataRowView drv in dv)
{
tmpNode = new TreeNode();
tmpNode.Value = drv["Id"].ToString();
tmpNode.Text = drv["Context"].ToString();
tmpNode.NavigateUrl = drv["url"].ToString(); ;
Nds.Add(tmpNode);
this.InitTree(tmpNode.ChildNodes, tmpNode.Value);
}
}
protected void tvMenu_SelectedNodeChanged(object sender, EventArgs e)
{
//Response.Write("adfdf");
}}
代码如下:请高手指点,最好能有源代码...<%@ Page Language="C#" AutoEventWireup="true" CodeFile="数据库动态树型菜单-Tree.aspx.cs" Inherits="Tree" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="tvMenu" Font-Size="12px" runat="server" BackColor="#E0E0E0" CollapseImageUrl="~/Tree/Plusbox.gif" ExpandDepth="1" ExpandImageUrl="~/Tree/Minusbox.gif" NodeIndent="10" NoExpandImageUrl="~/Tree/Minusbox.gif" ShowLines="True" Width="202px" LineImagesFolder="~/TreeLineImages" OnSelectedNodeChanged="tvMenu_SelectedNodeChanged">
<ParentNodeStyle Font-Bold="False" ImageUrl="~/Tree/hintBehavior.gif" />
<HoverNodeStyle BackColor="#8080FF"
Font-Underline="True" Font-Size="Larger" />
<SelectedNodeStyle Font-Underline="True" HorizontalPadding="0px" VerticalPadding="0px" BackColor="#FFE0C0" />
<RootNodeStyle ImageUrl="~/Tree/22.gif" />
<NodeStyle Font-Names="Verdana" Font-Size="12pt" HorizontalPadding="0px"
NodeSpacing="0px" VerticalPadding="0px" />
<LeafNodeStyle ChildNodesPadding="0px" ImageUrl="~/Tree/iconedit.GIF" />
</asp:TreeView>
</div>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class Tree : System.Web.UI.Page
{ SqlConnection Conn = new SqlConnection("server=LOO;database=Tree;uid=sa;pwd=immenseloo");
DataSet ds = new DataSet(); protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ this.createDataSet();
this.InitTree(tvMenu.Nodes, "0");
}
}
private void createDataSet()
{ try
{
Conn.Open();
string sqlStr = "select * from tbTree ";
SqlDataAdapter cmdSelect = new SqlDataAdapter(sqlStr, Conn);
cmdSelect.Fill(ds, "Tree");
}
catch (Exception ex)
{
Response.Write(ex.ToString());
Response.End();
}
finally
{
Conn.Close();
} }
protected void InitTree(TreeNodeCollection Nds, string parentId)//用递归方法动态生成节点
{
DataView dv = new DataView();
TreeNode tmpNode;
dv.Table = ds.Tables["Tree"];
dv.RowFilter = "ParentId=" + "'" + parentId + "'";
foreach (DataRowView drv in dv)
{
tmpNode = new TreeNode();
tmpNode.Value = drv["Id"].ToString();
tmpNode.Text = drv["Context"].ToString();
tmpNode.NavigateUrl = drv["url"].ToString(); ;
Nds.Add(tmpNode);
this.InitTree(tmpNode.ChildNodes, tmpNode.Value);
}
}
protected void tvMenu_SelectedNodeChanged(object sender, EventArgs e)
{
//Response.Write("adfdf");
}}
http://www.cnblogs.com/dnmidi/archive/2007/12/01/979710.html
示例
<script language="JavaScript"
src="http://www.meizz.com/Web/Plugs/MzTreeView10.js"></script>
<base href="http://www.meizz.com/Web/">
<style>
A.MzTreeview
{
font-size: 9pt;
padding-left: 3px;
}
</style>
<script language="JavaScript">
var tree = new MzTreeView("tree"); tree.icons["property"] = "property.gif";
tree.icons["css"] = "collection.gif";
tree.icons["book"] = "book.gif";
tree.iconsExpand["book"] = "bookopen.gif"; //展开时对应的图片 tree.setIconPath("http://www.meizz.com/Icons/TreeView/"); //可用相对路径 tree.nodes["0_1"] = "text:WEB 编程";
tree.nodes["1_100"] = "text:代码示例; data:id=100";
tree.nodes["1_200"] = "text:梅花雪脚本控件集; data:id=200";
tree.nodes["1_310"] = "text:CSS; icon:css; data:id=310";
tree.nodes["1_320"] = "text:DHTML; data:id=320";
tree.nodes["1_300"] = "text:HTML; data:id=300";
tree.nodes["1_400"] = "text:JavaScript; icon:book; data:id=400";
tree.nodes["320_322"] = "text:属性; icon: property; data:id=322";
tree.nodes["320_323"] = "text:方法; data:id=323";
tree.nodes["320_324"] = "text:事件; icon:event; data:id=324";
tree.nodes["320_325"] = "text:集合; data:id=325";
tree.nodes["400_407"] = "text:对象; data:id=407";
tree.nodes["400_406"] = "text:方法; data:id=406";
tree.nodes["400_408"] = "text:运算符; data:id=408";
tree.nodes["400_409"] = "text:属性; data:id=409";
tree.nodes["407_1140"] = "text:Date; url:Article.asp; data:id=140";
tree.nodes["406_1127"] = "text:toString; url:Article.asp; data:id=127";
tree.nodes["408_1239"] = "text:||; url:Article.asp; data:id=239";
tree.nodes["409_1163"] = "text:E; url:Article.asp; data:id=163"; tree.setURL("Catalog.asp");
tree.setTarget("MzMain");
document.write(tree.toString()); //亦可用 obj.innerHTML = tree.toString();
</script>
控件下载:http://www.meizz.com/Web/Download/MzTreeView10.rar