一、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 代码
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; ctn.NavigateUrl = "http://thcjp.cnblogs.com/jiashe.aspx?aa=" + datas["cid"].ToString(); /* * 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 访问相同数据。