母版页 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
<?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 的话就是根目录, 代码如下
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方法就会结束。
母版页 treeview控件 SiteMapPath控件 treeview数据库绑定模式的更多相关文章
- MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件
类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...
- asp.net 第三方UI控件 Telerik KendoUI 之 TreeVIew 的用法记录
一.前台显示 备注:一次性取出所有节点 function loadTreeData() { $.ajax({ type: 'POST', url: '@(Html.UrlHref("Scri ...
- “眉毛导航”——SiteMapPath控件的使用(ASP.NET)
今天做网站的时候,用到了SiteMapPath控件,我把使用方法记录下来,以便日后查阅以及帮助新手朋友们. SiteMapPath”会显示一个导航路径(也称为痕迹导航或眉毛导航),此路径为用户显示当前 ...
- “面包屑导航”——SiteMapPath控件的使用(ASP.NET)(转)
转自:http://www.cnblogs.com/ball-head/archive/2010/09/28/1837253.html 最近在博客里写了一些日志,主要都是我在实际编程过程中遇到的问题. ...
- SiteMapPath控件的使用(ASP.NET)
最近在博客里写了一些日志,主要都是我在实际编程过程中遇到的问题.问题出现后,先自己推敲,搞不定的,就上网去搜,再就是请教同学.同事,从中获益匪浅,也很难得!现在把感觉比较实用的一些功能代码之类的发布到 ...
- 【原创】自己动手写控件----XSmartNote控件
一.前面的话 在上一篇博文自己动手写工具----XSmartNote [Beta 3.0]中,用到了若干个自定义控件,其中包含用于显示Note内容的简单的Label扩展控件,用于展示标签内容的labe ...
- winform用户控件、动态创建添加控件、timer控件、控件联动
用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...
- paip.gui控件tabs控件加载内容的原理以及easyui最佳实现
paip.gui控件tabs控件加载内容的原理以及easyui最佳实现 //////////////tabs控件的加载 同form窗体一样,俩个方式 两个方式:一个是url,简单的文本可以使用这个,不 ...
- iOS开发中的错误整理,关于用绑定Tag取控件的注意事项,有时候不绑定也是个错!
如图:红色框中是个自定义的导航工具条titlesView(没有绑定Tag),工具条中有五个按钮(按钮绑定了Tag)以及一个红色的指示器indicatorView(没有绑定Tag),下面的蓝色是可以滚动 ...
随机推荐
- android studio 项目生成的apk变小的原因
问题:感觉直接在apk文件夹下面拷出来的apk不能安装使用,而且apk比较小,可能就是这个问题引起的 Android Studio版本升级到2.3后,增加了instant run功能,对项目的buil ...
- 【ES6基础】字符串扩展
4.字符串扩展 (1)for...of循环遍历. let foo = [1,2,3,4,5,6] for(let i of foo){ console.log(i); } 结果: (2)include ...
- CSS | 自适应两栏布局方法
html代码: <div class="main"> <div class="left" style="background: #0 ...
- 微信小程序 wepy框架 之拦截器intercepter使用
1,在使用wepy框架创建的项目下 找到src/app.wpy 2,在app.wpy constructor方法中添加 super(); this.use('promisify');//启用ES6 p ...
- [系列] Go 使用 defer 函数 要注意的几个点
概述 defer 函数大家肯定都用过,它在声明时不会立刻去执行,而是在函数 return 后去执行的. 它的主要应用场景有异常处理.记录日志.清理数据.释放资源 等等. 这篇文章不是分享 defer ...
- [ASP.NET Core 3框架揭秘] 依赖注入[10]:与第三方依赖注入框架的适配
.NET Core具有一个承载(Hosting)系统,承载需要在后台长时间运行的服务,一个ASP.NET Core应用仅仅是该系统承载的一种服务而已.承载系统总是采用依赖注入的方式来消费它在服务承载过 ...
- android studio学习----目录结构
项目结构:一个窗口只有一个项目,项目 叫 Project 代表一个workspace 一个项目的结构跟eclipse区别还是蛮大的: 首先看APP结构:app放的其实就是 java文件和资源文件 ...
- SVN服务器和客户端的下载和安装
一.SVN服务器VisualSVN下载和安装 当前版本:4.1.3下载地址:https://www.visualsvn.com/server/download/下载下来的文件:VisualSVN-Se ...
- 【转载】单线程Redis性能为何如此之高?
Redis的优势 性能高不仅跟线程模型有关,它有很多原因,主要有如下3点: 基于内存: 单线程,但IO多路复用的利用率高: 数据结构为高性能优化. 下面分别阐述. Redis的优势:基于内存 性能高低 ...
- https的原理
https目的是为了防止第三方截获信息,原理是使用非对称加密和数字证书认证传输密钥建立连接,使用密钥对称加密信息进行通讯. https建立连接的过程: 数字证书原理: