母版页 treeview控件 SiteMapPath控件 treeview数据库绑定模式
母版页就是网站中一样的部分
母版页的后缀名是.Master
可以把母版页当成一个页面 想让哪里是别的内容就可以 通过如下:
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
//相当于占位符 想改哪里占据哪里!
如果要创建带母版页的Web窗体 右击新建项即可
同样的 我们可以在母版页中添加JQUERY的引用 这样我们就可以在子页面中写入工厂函数的代码
如果套用母版页,控件的ID值会发生变化
![]()
这是Html生成的代码
解决方案:
![]()
JavaScript: var obj = document.getelementbyid("<%Label1.ClientID%>");
Jquery: $('#<%Label1.ClientID%>')
TreeView 绑定 XML
需要XmlDataSource控件,再设置TextField,NavigateUrlField 属性
SiteMapPath 站点地图控件
我们可以把它放到母版页
这个控件只能绑定Xml 其文件路径在项目根目录 名称为Web.sitemap
TreeView数据来源 表设计
![]()
parentNodeid与nodeid对应 parentnodeid 0 的话就是根目录, 代码如下
分析:回调的方法是为了添加一个根目录的所有子集 添加完一个根节点的所有子集 foreach就会结束,那么方法执行就会结束,再次回到非回调的方法中 继续加载,直到所有根节点的子集全部加载完 ,此时bindtree方法就会结束。
母版页的后缀名是.Master
可以把母版页当成一个页面 想让哪里是别的内容就可以 通过如下:
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
//相当于占位符 想改哪里占据哪里!
如果要创建带母版页的Web窗体 右击新建项即可
同样的 我们可以在母版页中添加JQUERY的引用 这样我们就可以在子页面中写入工厂函数的代码
如果套用母版页,控件的ID值会发生变化
这是Html生成的代码
解决方案:
JavaScript: var obj = document.getelementbyid("<%Label1.ClientID%>");
Jquery: $('#<%Label1.ClientID%>')
TreeView 绑定 XML
需要XmlDataSource控件,再设置TextField,NavigateUrlField 属性
SiteMapPath 站点地图控件
我们可以把它放到母版页
这个控件只能绑定Xml 其文件路径在项目根目录 名称为Web.sitemap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?xml version= "1.0" encoding= "utf-8" ?> <siteMap xmlns= "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url= "/default.aspx" title= "第三波书店" description= "第三波书店" > <siteMapNode url= "" title= "第二章" description= "" > <siteMapNode url= "/chp02/login.aspx" title= "登录" ></siteMapNode> <siteMapNode url= "/chp02/SessionLogin.aspx" title= "Sesson学习" ></siteMapNode> </siteMapNode> <siteMapNode url= "" title= "第四章" description= "" > <siteMapNode url= "/chp04/webForm1.aspx" title= "母版页一" ></siteMapNode> <siteMapNode url= "/chp04/webForm2.aspx" title= "母版页二" ></siteMapNode> <siteMapNode url= "/chp04/webForm3.aspx" title= "站点地图" ></siteMapNode> <siteMapNode url= "/chp04/ZzhDemo.aspx" title= "呵呵" ></siteMapNode> </siteMapNode> </siteMapNode> </siteMap> |
TreeView数据来源 表设计
parentNodeid与nodeid对应 parentnodeid 0 的话就是根目录, 代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | public partial class BingTreeView : System.Web.UI.Page { //也可以使用list泛型集合 DataTable dt = new DataTable(); protected void Page_Load( object sender, EventArgs e) { // foreach(DataRow row in dt.Rows) // { // SysFun fun = new SysFun() // { // NodeId = Convert.ToInt32(row["nodeId"]), // DisplayName = row["DisplayName"].ToString(), // DisplayOrder = Convert.ToInt32(row["DisplayOrder"]), // ParentNodeId = Convert.ToInt32(row["ParentNodeId"]), // NodeUrl = row["nodeUrl"].ToString() // }; // list.Add(fun); // } string sql = "select * from [SysFun]" ; dt = SQLHelper.ExcuteTable(sql, null ).Tables[0]; BindTree( "0" ,TreeView1.Nodes); //参数:(从头开始 根节点) } public void BindTree( string parentId,TreeNodeCollection tnc) { DataView dv = dt.DefaultView; //返回可用于筛选的集合 dv.RowFilter = "parentNodeId=" +parentId; //筛选出符合treeview规则的dv foreach (DataRowView row in dv) { TreeNode newtn = new TreeNode(); //声明treenode newtn.Text = row[ "Displayname" ].ToString(); newtn.NavigateUrl = row[ "NodeUrl" ].ToString(); newtn.Value = row[ "NodeId" ].ToString(); tnc.Add(newtn); BindTree(newtn.Value,newtn.ChildNodes); //继续回调 找完继续找parentNodeId(方法结束继续Foreach) } } } |
分析:回调的方法是为了添加一个根目录的所有子集 添加完一个根节点的所有子集 foreach就会结束,那么方法执行就会结束,再次回到非回调的方法中 继续加载,直到所有根节点的子集全部加载完 ,此时bindtree方法就会结束。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异