控件(四)——TreeView控件以SiteMapdataSource控件为数据源实现最简单的站点地图

站点地图的应用还是比较普遍的。哪怕一个简单的个人主页,也会有站点地图。今天我们做一个小例子,作用只是抛砖引玉。

首先,添加一个Web.sitemap,注意我们这里不改变该文件的名字。添加如下代码:

 

<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

<siteMapNode url="a.aspx" title="首页"  description="点此返回首页">

  <siteMapNode url="b.aspx" title="根目录B页"  description="点此返回首页" />

  <siteMapNode url="kongjian1.aspx" title="概念页"  description="" />



  <siteMapNode url="" title ="第一个子目录" description ="">

    <siteMapNode url="~/one/a.aspx" title="第一个子目录A页" description ="" />

    <siteMapNode url="~/one/b.aspx" title ="第一个子目录B页" description ="" />

  </siteMapNode>



  <siteMapNode url="" title ="one目录的子目录" description ="">

    <siteMapNode url="~/one/cone/a.aspx" title ="one目录的子目录a" description ="" />

    <siteMapNode url="~one/cone/b.aspx" title="one目录的子目录b" description ="" />

  </siteMapNode>



  <siteMapNode url="" title="TWO目录" descripition="这里是介绍">

    <siteMapNode url="~/two/a.aspx" title="TWO目录的子目录a" descripition="这里是介绍"/>

    <siteMapNode url="~/two/b.aspx" title="TWO目录的子目录b" descripition="" />

  </siteMapNode>



  <!--<siteMapNode siteMapFile ="~/mysm.sitemap" />-->

  <!--<siteMapNode provider="sqlsitemap" />-->

  <siteMapNode url="sitemap.aspx" title="动态修改内容中" description ="动态修改内存中的站点地图" />

</siteMapNode>



  

</siteMap>




然后我们在default.aspx页添加一个TreeView控件,配置它的数据源为站点地图。就会如下图显示:

 控件(四)——TreeView控件以SiteMapdataSource控件为数据源实现最简单的站点地图

前台代码:

 

        protected void Page_Load(object sender, EventArgs e)

        {

            //首先这里注册一个事件,也就是说在访问CurrentNode属性的时候触发这个事件(委托)

            SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);



        }



        SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)

        {//我们自定义的处理方法

            SiteMapNode CurrentNode = SiteMap.CurrentNode.Clone(true);

            //上面这句,获取并创建当前节点的副本,并同时复制他的上级节点

            

            SiteMapNode TempNode = CurrentNode;



            int id = nid();

            int page = npage();



            //从下面方法中得到变量

            if (id > 0)

            {

                TempNode.Url = TempNode.Url + "?id=" + id.ToString();

            }

            if (id > 0 && page >= 0)

            {

                TempNode.Url = TempNode.Url + "?id=" + id.ToString();

            }

            else if (page >= 0)

            {

                TempNode.Url = TempNode.Url + "?page" + page.ToString();

            }

            return TempNode;

        }



        private int nid()

        {//随便设置的数

            return 12;

        }

        private int npage()

        {

            return 3;

        }

    }


显示效果:

 控件(四)——TreeView控件以SiteMapdataSource控件为数据源实现最简单的站点地图

我们只需要点击相应连接,就会返回相应页面。

你可能感兴趣的:(dataSource)