12.3 导航控件
ASP.NET 4.5中包括了三个专门用于站点导航的服务器端控件SiteMapPath、Menu、TreeView。这三个控件对导航都有用处,Menu和TreeView控件对于站点导航上下文外部展现很有用处,都用于维护显示名称/URL映射的集合,SiteMapPath专门用于Web站点的导航。
12.3.1 TreeView控件
TreeView控件是一种用来表示树状架构的控件,特别适合用来表示复杂的层次分类,它用树形结构显示分层数据,如菜单、目录或文件目录等。也可以用来显示XML、表格或关系数据。凡是树形层次关系的数据的显示,都可以用TreeView控件。
TreeView控件以树型结构来对网站进行导航,它支持以下功能:
● 数据绑定,它允许控件的节点绑定到XML、表格或关系数据。
● 站点导航,通过与SiteMapDataSource控件集成实现。
● 节点文本既可以显示为纯文本也可以显示为超链接。
● 借助编程方式访问TreeView对象模型以动态地创建树、填充节点、设置属性等。
● 客户端节点填充。
● 在每个节点旁显示复选框的功能。
● 通过主题、用户定义的图象和样式可实现自定义外观。
TreeView控件是一种用来表示树状架构的控件,树中的每一个项都被称为一个节点。因此,一个完整的树由一个或多个节点构成。这些节点的类型如表12-2所示。一个节点可以同时为父节点和子节点,但不能同时为根节点、父节点和叶节点。
表12-2 TreeView控件的节点类型
TreeView控件定义的语法格式如下:
TreeView控件提供如表12-3所示的常用属性。
表12-3 TreeView控件的常用属性
另外,可以利用TreeView控件的CollapseAll和ExpandAll方法折叠和展开节点。利用TreeView控件的Nodes.Add方法添加节点到控件中。利用TreeView控件的Nodes.Remove方法删除指定的节点。
TreeView控件中的每个节点实际上都是TreeNode类对象,TreeNode对象由以下4个用户界面元素组成,可以自定义或隐藏这些元素。
● 展开节点指示图标:一个可选图像,指示是否可以展开节点以显示子节点。默认情况下,如果节点可以展开,此图像将为加号(+),如果此节点可以折叠,则图像为减号(-)。
● 可选的节点图像:可以指定要显示在节点文本旁边的节点图像。
● 节点文本:节点文本是在TreeNode对象上显示的实际文本。节点文本的作用类似于导航模式中的超链接或选择模式中的按钮。
● 与节点关联的可选复选框:复选框是可选的,以允许用户选择特定节点。
在TreeNode中,主要在两个属性中存储数据:Text属性和Value属性。Text属性指定在节点显示的文字,Value属性用来获取节点的值。TreeNode的常用属性如表12-4所示。
表12-4 TreeNode类的常用属性
(续表)
TreeView控件的Nodes包含所有节点(即TreeNode)的集合,可以用设计器为TreeView控件添加节点,也可以使用编程的方式动态添加节点。
【实例12-2】TreeView控件的使用
本实例使用例12-1创建的Web.sitmap网站地图,使用TreeViwe控件、SiteMapDataSource控件实现树状网站导航,具体实现步骤如下:
01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例12-2”。
02 在“实例12-2”中创建和例12-1中相同的网站地图Web.sitemap文件
03 在网站根目录下创建一个名为Default.aspx的窗体文件。
04 单击Default.aspx文件,进入到“视图编辑”界面,打开“设计视图”,进入“源视图”,在编辑区的<form>和</form>节点中编写代码如下:
上面的代码中,第1行添加一个TreeView控件并设置其属性DataSourceID为SiteMapDataSource1控件。第2行添加一个SiteMapDataSource控件。
05 将鼠标移到TreeVeiw控件上,其上方会出现一个向右的黑色小三角。单击它,弹出“TreeVeiw任务”列表,选择“自动套用格式”选项。在如图12-3所示的“自动套用格式”对话框中选择“选择方案”列表里的“箭头”选项,然后单击“确定”按钮。
图12-3 “自动套用格式”对话框
06 按快捷键Ctrl+F5运行程序,运行效果如图12-4所示。
图12-4 运行结果
12.3.2 Menu控件
与TreeView控件一样,Menu控件是另一个支持层次化数据的导航控件。与TreeView控件不同的是,MenuItem对象并不支持复选框,也不能够通过编程设置它们的折叠/展开状态。不过,它们还是有很多相似的属性,包括那些用于设置图片、确定项目是否可选以及指定目标链接的属性。在日常使用中,可以把Menu控件绑定到数据源或者手工(声明性地或者通过编程)使用MenuItem对象来填充它。
Menu控件支持以下功能:
● 通过与SiteMapDataSource控件集成提供对站点导航的支持。
● 可以显示为可选择文本或超链接的节点文本。
● 通过编程访问Menu对象模型,使程序员可以动态地创建菜单,填充菜单项以及设置属性等。
● 能够采用水平方向或竖直方向的形式导航。
● 支持静态或动态的显示模式。
Menu控件提供如表12-5所示的常用属性
表12-5 Menu控件的常用属性
Menu控件由菜单项(由Menultem对象表示)树组成。顶级(级别0)菜单项称为“根菜单项”。具有父菜单项的菜单项称为“子菜单项”。所有根菜单项都存储在Items集合中。子菜单项存储在父菜单项的ChildItems集合中。
与TreeView控件相似,每个菜单项都具有Text属性和Value属性。Text属性的值显示在Menu控件中,而Value属性则用于存储菜单项的任何其他数据。如果设置了Text属性,但是未设置Value属性,则Value属性会自动设置为与Text属性相同的值。反之亦然。如果设置了Value属性,但是未设置Text属性,则Text属性会自动设置为Value属性的值。
单击菜单项可导航到NavigateUrl属性指示的另一个网页。如果菜单项未设置NavigateUrl属性,则单击该菜单项时,Menu控件只是将页提交给服务器进行处理。其中,MenuItem属性如表12-6所示。
表12-6 MenuItem属性
【实例12-3】Menu控件的使用
本实例演示将站点地图绑定到Menu控件,通过可视化的方式创建网站的菜单控件导航,具体实现步骤如下。
01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例12-3”。
02 在“实例12-3”中创建一个Web.sitemap文件,文件中的内容与“实例12-2”中的同名文件相同。
03 在网站根目录下创建一个名为Default.aspx的窗体文件。
04 单击创建的Default.aspx文件,进入到“视图设计器”,从“工具箱”拖动一个Menu控件到“设计视图”界面中。
05 将鼠标移到Menu控件上,其上方会出现如图12-5所示一个向右的黑色小三角。单击它,弹出“Menu任务”列表。
图12-5 Menu任务列表
06 展开“选择数据源”下拉列表,选择“新建数据源”命令,弹出如图12-6所示的“数据源配置向导”对话框。
图12-6 数据源配置向导对话框
07 在“应用程序从哪里获取数据”列表中选择“站点地图”,单击“确定”按钮。
08 在图12-5的“Menu任务”列表中选择“自动套用格式”选项,在“自动套用格式”对话框中选择“选择架构”列表里的“彩色型”,然后单击“确定”按钮。
09 进入Menu控件“属性”窗口,设置Orientation属性为Horizontal表示菜单将以水平方向布局。
10 按快捷键Ctrl+F5运行程序,如图12-7所示。
图12-7 运行结果
12.3.3 SiteMapPath控件
SiteMapPath控件显示一个导航路径,此路径为用户显示当前页的位置,并显示返回到主页的路径链接。SiteMapPath控件包含来自站点地图的导航数据,此数据包括有关网站中页的信息,如URL、标题、说明和导航层次结构中的位置。
SiteMapPath控件使用起来非常简单,但却解决了很大的问题,在ASP和ASP.NET的早期版本中,在向网站添加一个页然后,在网站内的其他各页中添加指向该新页的链接时,必须手动添加链接。现在只需要将导航数据存储在一个地方,通过修改该导航数据,就可以方便地在网站的导航栏目中添加和删除项了。
SiteMapPath由节点组成。路径中的每个元素均称为节点,用SiteMapNodeItem对象表示。锚定路径并表示分层树的根的节点称为根节点。表示当前显示页的节点称为当前节点。当前节点与根节点之间的任何其他节点都为父节点。SiteMapPath包含如下几种节点类型:
● 根节点,锚定节点分层组的节点。
● 父节点,有一个或多个节点但不是当前节点的节点。
● 当前节点,表示当前显示页的节点。
SiteMapPath控件提供如表12-7所示的常用属性。
表12-7 SiteMapPath控件的常用属性
(续表)
【实例12-4】SiteMapPath控件的使用
本实例使用站点地图Web.sitemap和SiteMapPath控件实现的网站导航功能,具体步骤如下:
01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例12-4”。
02 在该网站中创建一个Web.sitemap文件。文件中的内容与“实例12-1”中的同名的文件相同。
03 在网站根目录下创建一个名为Default.aspx的窗体文件。
04 单击创建Default.aspx文件,进入到“视图设计器”,从“工具箱”拖动一个SiteMapPath控件到“设计视图”。
05 将鼠标移到SiteMapPath控件上,其上方会出现一个向右的黑色小三角,单击它,弹出“SiteMapPath任务”列表,如图12-8所示。
图12-8 SiteMapPath任务列表
06 选择“自动套用格式”命令,在弹出的“自动套用格式”对话框中,选择“选择架构”列表里的“彩色型”选项,单击“确定”按钮。
07 分别创建三个页面Software.aspx、Support.aspx和Computerbooks.aspx用于显示软件页面、技术支持页面和计算机书籍页面。
08 在上面新创建的三个页面中各自添加一个SiteMapPath控件并设置和Default.aspx页面相同的格式。
09 用右键单击根目录下的Support.aspx文件,在弹出的菜单中选择“在浏览器中查看”命令。运行后的效果如图12-9所示,显示了该页面的导航位置。
图12-9 运行结果1
10 用右键单击根目录下的Computerbooks.aspx文件,在弹出的菜单中选择“在浏览器中查看”命令。运行后的效果如图12-10所示显示该页面的导航位置。
图12-10 运行结果2