第八章   导航控件
                                    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"
                                    源内容页面:  内容页 用户名密码 
                                    目的内容页面:接受内容页的用户名或显示欢迎信息

et_highlighter