导航控件 TreeView Menu SiteMapPath
一、SiteMapPath
导航控件
当前节点要显示链接请在
SiteMapPath控件中写 RenderCurrentNodeAsLink="True"
二、母板页设置
三、站点地图
链接地址 url="~/two/a.aspx" 标题 Title ="" 鼠标放上去出现的提示: description =""
四、Menu控件
Ⅰ.静态和动态显示
①MaximumDynamicDisplayLevels 菜单支持的最大弹出数 ②StaticDisplayLevels 菜单的静态部分显示级别数,默认值为1 StaticDisplayLevels 属性指示从根菜单算起,静态显示的菜单的层数。例如,如果将 StaticDisplayLevels 设置为 3,菜单将以静态显示的方式展开其前三层。静态显示的最小层数为 1,如果将该值设置为 0 或负数,该控件将会引发异常。 |
Ⅱ.横纵向排列 Orientation
五、动态修改内存中站点地图
SiteMap 类
SiteMap 类是站点的导航结构在内存中的表示形式,导航结构由一个或多个站点地图提供程序提供。无法继承此类。
SiteMapNode 类
表示分层的站点地图结构(如 SiteMap 类和实现抽象类 SiteMapProvider 的类所描述的结构)中的一个节点。
在需要的页面动态更改当前节点SiteMapPath SiteMap.CurrentNode.ReadOnly = false; 当前节点要显示链接请在 SiteMapPath控件中写 RenderCurrentNodeAsLink="True" 网上好多方法都是使用委托..那个是应用到整个动态站点的 我的源码(petshop重构)如下: SiteMap.CurrentNode.ReadOnly = false; |
六、自定义数据提供程序√(vs200570)
Web.Config
Web.sitemap
七、TreeView 控件
添加颜色
0 TreeNodeStyle 1级节点
1 TreeNodeStyle 2级节点
2 TreeNodeStyle 3级节点
…
复选框
Root 根节点
Leaf 叶节点
八、TreeView 高级使用
Ⅰ.ault2.aspx 设计
Ⅱ.Web.Config设置
Ⅲ.SQL数据库表设置
Ⅳ.Default2.aspx.cs 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Data.SqlClient; public partial class Default2 : System.Web.UI.Page { protected void Page_Load( object sender, EventArgs e) { if (!IsPostBack) { //首先填充第一级节点 DataView dv = drv( "select * from big" ); foreach (DataRowView datas in dv) { //循环数据视图,将相应的值交给一个节点对象,然后添加到树上又继续添加 TreeNode tn = new TreeNode(); tn.Text = datas[ "title" ].ToString(); tn.Value = datas[ "bid" ].ToString(); tn.Expanded = false ; //添加到TreeView1树上 TreeView1.Nodes.Add(tn); //调用方法填充二级节点 AddChildNode(tn); } } } private DataView drv( string query) { //根据传来的SQL字符串返回一哥数据视图 //在Web.Config里设置ConnectionStrings string connstr = ConfigurationManager.ConnectionStrings[ "aaConn" ].ConnectionString; SqlConnection conn = new SqlConnection(connstr); SqlDataAdapter adapter = new SqlDataAdapter(query, conn); DataSet ds = new DataSet(); adapter.Fill(ds, "tree" ); return ds.Tables[ "tree" ].DefaultView; } private void AddChildNode(TreeNode tn) { //填充二级节点,它需要一级节点的Value值,所以送了一个完整的根节点对象 int bid = Convert.ToInt32(tn.Value); DataView dv = drv( "select * from class where bid=" + bid + "" ); foreach (DataRowView datas in dv) { TreeNode ctn = new TreeNode(); ctn.Text = datas[ "title" ].ToString(); ctn.Value = datas[ "cid" ].ToString(); //ctn.Expanded = false; /* * XXXXXXXXX添加到子节点上XXXXXXXXXXX */ tn.ChildNodes.Add(ctn); } } protected void Button1_Click( object sender, EventArgs e) { //将选中项的值打印出来 if (TreeView1.CheckedNodes.Count > 0) { foreach (TreeNode tn in TreeView1.CheckedNodes) { //迭代所有被选中的项 if (tn.ChildNodes.Count > 0) { //如果被选中项下面还有子节点 foreach (TreeNode ctn in tn.ChildNodes) { //迭代所有子节点,把值读出来 Response.Write(ctn.Text + "<br>" ); } } else { //如果没有子节点,说明是叶节点,那么直接读取被选值 Response.Write(tn.Text + "<br>" ); } } } } protected void TreeView1_SelectedNodeChanged( object sender, EventArgs e) { //点击了没有链接的节点(前提是其SelectAction为Select) Label2.Text = TreeView1.SelectedNode.Text; } protected void TreeView1_TreeNodeExpanded( object sender, TreeNodeEventArgs e) { Label2.Text = "你展开了" + e.Node.Text; } protected void TreeView1_TreeNodeCollapsed( object sender, TreeNodeEventArgs e) { Label2.Text = "你折叠了" + e.Node.Text; } } |
+ = = = = = = = = = = = = = = = = = = +
附:
TreeView 和 Menu 控件之间的一些区别
TreeView 和 Menu 控件之间的一些区别,以帮助您为特定的方案选择适当的控件。
功能 |
Menu |
TreeView |
展开 |
弹出 |
就地展开 |
按需下载 |
否 |
是 |
复选框 |
否 |
是 |
模板 |
是 |
否 |
布局 |
水平和垂直 |
垂直 |
样式选项 |
是 |
否 |
选择模型 |
静态级别、动态级别 |
或父/根/叶、或按数据项 |
在此示例中,您会看到具有为不同区域和操作配置的各种样式属性(例如,NodeStyle 和 HoverNodeStyle)的 TreeView 和 Menu 控件。TreeView 和 Menu 控件都将连接到页上的同一 SiteMapDataSource 控件。SiteMapPath 控件正在通过在 Web.config 文件中设置的默认 SiteMapProvider 访问相同数据。
作者:【唐】三三
出处:https://www.cnblogs.com/tangge/archive/2011/10/06/2200102.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具