Asp.Net2.0中的导航功能(一)--概述

网站的导航功能是给浏览该网站的用户起一个指示的作用,让用户能清楚了解自己当前处于网站的哪一层,并能快速在各层不同模块间进行切换。
过去我们做网站时需要手动地为每一个页面实现导航功能,这样做起来工作量太庞大,可维护性差,而且很容量出错。
在Asp.Net2.0中为我们提供了三个常用的导航控件:
    TreeView控件
    Menu控件
    SiteMapPath控件

   
导航控件的优点在于:
    1、提供可视化的操作界面,和面向对象的思想,简化开发人员的使用。开发人员没有必要再去为HTML,CSS,JavaScript大费脑筋,只需要设置内处属性就可以制作出专业的网站导航。
    2、数据源的多样化,可以进行动态生成导航内容。开发人员除了可以在程序中把导航内容写“死”,还可以把导航内容放XML、SiteMap文件中甚至可以放在数据库中。
   
一、以上这三个控件要实现导航功能一般离不开一个“地图文件”,“地图文件”中记录了导航控件中的导航内容,并有固定的书写格式。
如:
//web.sitemap文件的内容
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    <siteMapNode url="china.aspx" title="中国" description="">
      <siteMapNode url="shandong.aspx" title="山东" description="">
        <siteMapNode url="default9.aspx" title="济南">
          <siteMapNode url="site.aspx?id=0100" title="平阴"></siteMapNode>
          <siteMapNode url="site.aspx?id=0101" title="历城"></siteMapNode>
          <siteMapNode url="site.aspx?id=0102" title="章丘"></siteMapNode>
        </siteMapNode>
        <siteMapNode url="qingdao.aspx" title="青岛"></siteMapNode>
        <siteMapNode url="yantai.aspx" title="烟台"></siteMapNode>
      </siteMapNode>

      <siteMapNode url="jiangsu.aspx" title="江苏" description="">
        <siteMapNode url="nanjing.aspx" title="南京"></siteMapNode>
        <siteMapNode url="suzhou.aspx" title="苏州"></siteMapNode>
      </siteMapNode>
      <siteMapNode url="liaoning.aspx" title="辽宁">
        <siteMapNode url="shenyang.aspx" title="沈阳"></siteMapNode>
        <siteMapNode url="dalian.aspx" title="大连"></siteMapNode>
      </siteMapNode>
    </siteMapNode>
</siteMap>

通过上面的例子大家能看出“地图文件”是一个典型的XML文件,其中的每一个节点元素的名子都是siteMapNode,它呈现的是一种层次型的结构,与我们网站的导航功能在逻辑上是一致的。
    url属性:表示该导航节点所对应的超链接路径。
    title属性:导航节点所显示的名称
    description属性:节点的描述性说明

二、如果要读取地图文件的信息,我们一般会使用SiteMapDataSource控件,它是一个DataSource控件。它会自动嗅探相应目录下的web.sitemap文件,并把它读取出来,然后交给导航控件显示。SiteMapDataSource控件一般直接放在页面上就可以运行了,无需其它复杂设置。

三、TreeView控件将数据源的信息以树状目录的结构展现出来。


    属性:
        CollapseImageUrl:子元素收合起来时的节点图像路径。
        ExpandImageUrl:子元素展开后的节点图像路径。
        NoExpandImageUrl:叶子节点的图像咱径。
        ShowExpandCollapse:是否显示"+"、"-"节点指示
        ShowLines:是否显示节点之间的连线
        Nodes:当前节点的子节点集合
    方法:
        CollapseAll():关闭所有节点。
        ExpandAll():展开所有节点。
    事件:
        SelectedNodeChanged:在节点选取时触发。
        TreeNodeExpanded:在展开节点时触发。
        TreeNodeCollapsed:在节点收缩时触发。
        TreeNodeDataBound:当数据项绑定的时候触发。

四、SiteMapPath控件,是导航条工具。


    属性:
        PathSeparator:各导航项之间的分隔符。
        ParentLevelsDisplayed:显示该节点的几层父节点,默认是-1,显示所有的父节点。
    事件:
        ItemCreated:创建节点项时触发。
        ItemDataBound:将数据绑定到节点项时触发。
       这两个事件与Asp.Net1.1中DataGrid的两个事件的意思相似在此不多说。

五、Menu控件,以层次型菜单的形式展现导航内容,可以在属性页面和智能菜单中设置它的一些属性。


    属性:
        DisappearAfter:当鼠标放在菜单上时,动态菜单显示的时间
        StaticDisplayLevels:静态菜单中要显示的层级数
        MaximumDynamicDisplayLevels:对动态菜单呈现的菜单层级数目
    事件:
        MenuItemClick:点击菜单项所引发的事件
        MenuItemDataBound:绑定数据时发生 

posted @ 2010-09-17 09:51  英雄不问出处  阅读(300)  评论(0编辑  收藏  举报