控件(四)——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控件,配置它的数据源为站点地图。就会如下图显示:
前台代码:
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; } }
显示效果:
我们只需要点击相应连接,就会返回相应页面。
分类:
【控件】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构