母版页就是网站中一样的部分
母版页的后缀名是.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方法就会结束。
母版页的后缀名是.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方法就会结束。