• 导航控件 TreeView Menu SiteMapPath


    clip_image002

    一、SiteMapPath

    航控件

    clip_image004

    clip_image006

    当前节点要显示链接请在

    clip_image008

    SiteMapPath控件中写 RenderCurrentNodeAsLink="True"

    clip_image010

    clip_image012

    二、母板页设置

    clip_image014

    三、站点地

    clip_image016

    链接地址 url="~/two/a.aspx" 标题 Title ="" 鼠标放上去出现的提示: description =""

    四、Menu控件

    clip_image018

    clip_image020

    .静态和动态显示

    ①MaximumDynamicDisplayLevels 菜单支持的最大弹出数

    ②StaticDisplayLevels 菜单的静态部分显示级别数,默认值为1

    clip_image022

    StaticDisplayLevels 属性指示从根菜单算起,静态显示的菜单的层数。例如,如果将 StaticDisplayLevels 设置为 3,菜单将以静态显示的方式展开其前三层。静态显示的最小层数为 1,如果将该值设置为 0 或负数,该控件将会引发异常。

    .横纵向排列 Orientation

    clip_image024

    五、动态修改内存中站点地图

    SiteMap 类

    SiteMap 类是站点的导航结构在内存中的表示形式,导航结构由一个或多个站点地图提供程序提供。无法继承此类。

    SiteMapNode 类

    表示分层的站点地图结构(如 SiteMap 类和实现抽象类 SiteMapProvider 的类所描述的结构)中的一个节点。

    clip_image026

    在需要的动态更改点SiteMapPath

    SiteMap.CurrentNode.ReadOnly = false;
    SiteMap.CurrentNode.Title = "动态标题名称";
    SiteMap.CurrentNode.Url = "http://www.url.com";

    当前节点要显示链接请在

    clip_image008[1]

    SiteMapPath控件中写 RenderCurrentNodeAsLink="True"

    网上好多方法都是使用委托..那个是应用到整个动态站点的
    我这个方法是写在需要动态修改的页面里面需要修改的页的当前节点就会改成你需要动态生成的了

    我的源码(petshop重构)如下:

    SiteMap.CurrentNode.ReadOnly = false;
                SiteMap.CurrentNode.Title = Request.QueryString["categoryName"].ToString();
                SiteMap.CurrentNode.Url = "Products.aspx?categoryId=" + Request.QueryString["categoryId"].ToString() + "&categoryName=" + Request.QueryString["categoryName"].ToString();

    六、自定义数据提供程序√(vs200570)

    clip_image028

    Web.Config

    clip_image030

    Web.sitemap

    clip_image032

    七、TreeView 控件

    clip_image034

    clip_image036

    clip_image038

    clip_image040

    添加颜色

    0 TreeNodeStyle 1级节点

    1 TreeNodeStyle 2级节点

    2 TreeNodeStyle 3级节点

    clip_image042

    复选框

    clip_image044

    clip_image046

    Root 根节点

    Leaf 叶节点

    八、TreeView 高级使用

    clip_image048

    clip_image050

    clip_image052

    clip_image054

    clip_image056

    clip_image058

    Ⅰ.ault2.aspx 设计

    clip_image060

    Ⅱ.Web.Config设置

    clip_image062

    Ⅲ.SQL数据库表设置

    clip_image064

    Ⅳ.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 访问相同数据。

    VB Navigation Controls
    clip_image065
    clip_image066

  • 相关阅读:
    Node开发--->10_Node.js_mongoDB增删改查操作
    Node开发--->9_Node.js_数据库概述及环境搭建
    Node开发--->8_Node.js异步编程
    Node开发--->7_服务器端开发
    Node开发--->6_服务器端开发
    Node开发--->5_nodejs中的模块加载机制
    Node开发--->4_package.json文件
    Node开发--->3_node模块化开发之第三方模块
    Node开发--->2_node模块化开发之系统模块
    2015-7-22 积累的力量
  • 原文地址:https://www.cnblogs.com/tangge/p/2200102.html
Copyright © 2020-2023  润新知