第八章 导航控件
1:Menu控件[菜单]
2:TreeView控件[树状]
3:SiteMapPath控件[网站路径]
4:MasterPage:母版页
Menu菜单控件
属性:
1)Item:用来设置菜单的项,还可以设置单击每一项时(NavigateUrl),进入的页面
2)Orientation:菜单的方向。
3)StaticEnableDefaultPopOutImage:是否三角箭头。
4)Font:设置菜单的字体
5)BorderStyle:设置菜单的边框样式。一般设为OutSet
6)DynamicMenuItemStyle:设置子菜单的样式 一般设为Groove
7)Target:用户单击了菜单项之后,用另外一个浏览器打开页面
TreeView控件:
属性:
1)Nodes:用来管理TreeView中各个节点。通过NavigateUrl设置对应的页面
2)NodeIndent:决定各父子节点之间的距离
3)SelectedNode:得到所选中的节点
4)this.TreeView1.SelectedNode.ChildNodes.Add(new TreeNode("天花板","值","导航"));
在选中的节点下面添加子节点:
5)添加节点:
DataTable dt = DataOper.RunHasResult("select * from 部门");
TreeNode root = new TreeNode("选择了部门");
this.TreeView2.Nodes.Add(root);
foreach (DataRow dr in dt.Rows)
{
TreeNode tn=new TreeNode(dr[0].ToString(),dr[1].ToString());
root.ChildNodes.Add(tn);
}
5)删除选中的节点:
if (this.TreeView1.SelectedNode.Parent != null)
{
this.TreeView1.SelectedNode.Parent.ChildNodes.Remove(this.TreeView1.SelectedNode);
}
else
{
this.TreeView1.Nodes.Remove(this.TreeView1.SelectedNode);
}
6)如何得到单击节点的文本与值。在SelectedNodeChanged事件里写上代码
this.TreeView1.SelectedNode.Text或this.TreeView1.SelectedNode.Value
7)几种情况:
A)单击节点时,不弹出页面,直接去执行某些代码。此时,应该在
SelectedNodeChanged事件里写上代码
举例:让用户在商品类别表中选择一种类别,在同一个页面里面显示该种
商品
B)单击节点时,弹出页面,但是不传递值。此时,应该在添加节点时,
直接指定NavigateUrl
举例:让用户在框架左边,选择对应的模块名,又边出现对应的页面
C)单击节点时,弹出页面,还要传递值。此时,应该在添加节点时,
直接指定NavigateUrl,和value
this.TreeView2.Nodes.Add(root);
foreach (DataRow dr in dt.Rows)
{
TreeNode tn = new TreeNode();
tn.Text = dr[1].ToString();
tn.Value = dr[0].ToString();
tn.NavigateUrl = "default2.aspx?id=" + dr[0].ToString();
root.ChildNodes.Add(tn);
}
举例:
让用户在商品类别表中选择一种类别,在另外一个页面里面显示该种
商品
D)从数据库的树型表里面填充treeview
假设有表:
NodeId ParentNode NodeName Url
10000 0 湖北省 www.hubei.com
10001 10000 武汉市
10002 10000 仙桃市
10003 0 广东省
10004 10003 广州市
10005 10003 漳州市
SiteMapPath控件
步骤:
1)创建站点地图文件SiteMap文件。是一个xml文件格式
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="" title="" description="">
<siteMapNode url="" title="" description="" />
<siteMapNode url="" title="" description="" />
</siteMapNode>
</siteMap>
Url:决定单击节点,所转到的页面
Title:节点的标题
Description:节点的描述说明
2)直接拖拉多个SiteMapPath到每一个页面上,从第二个页面开始
注意首页一般不用加SiteMapPath
4)设置各个级别的路径分割符
举例:
论坛首页--->计算机技术--->编程技术--->网络编程
MasterPage:母版页
能够固定某一个页面的区域,而使其它区域发生改变.
能够发生改变的页是内容页,不能发生改变的页是母版页
步骤:
1)创建一个母版页,并加入ContentPlaceHolder控件,用来装内容页
2)使用母版页。在新建网页面,勾选使用母版页,然后再选择一个母版页
3)一个母版页面里面可以有多个ContentPlaceHolder控件
4)很显然,内容页会随着母版页的变化,而发生变化。所以有时内容页希望
有几种情况:
1)同一个页面里面,内容页向母版页里面得到传递的数据
从母版页里面得到获得传递的数据
方法1:通过Url查询字符串
母版页:放入菜单,商品--->水果类,服饰类,家用类
内容页:放入GridView,内容页根据母版页所选择的商品类型不一样
而发生对应的改变
方法2:通过Master对像
比如:Master.FindControl("DropDownList1") as DropDownList).SelectedItem.Value;
举例:
母版页:放入一个下拉框,下拉框里面填充部门名称,从数据库里面获取
内容页:放入GridView,内容页根据母版页所选择的部门得到该部门的职工
2)不同页面之间,内容页的传值
源内容页面:Server.Transver("目的内容页");
目的内容页:((TextBox)PreviousPage.Form.FindControl("ContentPlaceHolder2").FindControl("txtUser")).Text;
//这里是源页面的ContentPlaceHolderID="ContentPlaceHolder2",而不是ID="Content1"
源内容页面: 内容页 用户名密码
目的内容页面:接受内容页的用户名或显示欢迎信息
评论