一、SiteMapPath
导航控件
当前节点要显示链接请在
SiteMapPath控件中写 RenderCurrentNodeAsLink="True"
二、母板页设置
三、站点地图
链接地址 url="~/two/a.aspx" 标题 Title ="" 鼠标放上去出现的提示: description =""
四、Menu控件
Ⅰ.静态和动态显示
①MaximumDynamicDisplayLevels 菜单支持的最大弹出数 ②StaticDisplayLevels 菜单的静态部分显示级别数,默认值为1 StaticDisplayLevels 属性指示从根菜单算起,静态显示的菜单的层数。例如,如果将 StaticDisplayLevels 设置为 3,菜单将以静态显示的方式展开其前三层。静态显示的最小层数为 1,如果将该值设置为 0 或负数,该控件将会引发异常。 |
Ⅱ.横纵向排列 Orientation
五、动态修改内存中站点地图
SiteMap 类
SiteMap 类是站点的导航结构在内存中的表示形式,导航结构由一个或多个站点地图提供程序提供。无法继承此类。
SiteMapNode 类
表示分层的站点地图结构(如 SiteMap 类和实现抽象类SiteMapProvider 的类所描述的结构)中的一个节点。
在需要的页面动态更改当前节点SiteMapPath SiteMap.CurrentNode.ReadOnly = false; 当前节点要显示链接请在 SiteMapPath控件中写 RenderCurrentNodeAsLink="True" 网上好多方法都是使用委托..那个是应用到整个动态站点的 我的源码(petshop重构)如下: SiteMap.CurrentNode.ReadOnly = false; |
六、自定义数据提供程序√(vs200570)
Web.Config
Web.sitemap
七、TreeView 控件
添加颜色
0 TreeNodeStyle 1级节点
1 TreeNodeStyle 2级节点
2 TreeNodeStyle 3级节点
…
复选框
Root 根节点
Leaf 叶节点
八、TreeView 高级使用
Ⅰ.ault2.aspx 设计
Ⅱ.Web.Config设置
Ⅲ.SQL数据库表设置
Ⅳ.Default2.aspx.cs 代码
|
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e)
{
if (!IsPostBack)
{
//首先填充第一级节点
DataView dv = drv( "select * from big" );
foreach (DataRowView datas in dv)
{
//循环数据视图,将相应的值交给一个节点对象,然后添加到树上又继续添加
TreeNode tn = new TreeNode();
tn.Text = datas[ "title" ].ToString();
tn.Value = datas[ "bid" ].ToString();
tn.Expanded = false ;
//添加到TreeView1树上
TreeView1.Nodes.Add(tn);
//调用方法填充二级节点
AddChildNode(tn);
}
}
}
private DataView drv( string query)
{
//根据传来的SQL字符串返回一哥数据视图
//在Web.Config里设置ConnectionStrings
string connstr = ConfigurationManager.ConnectionStrings[ "aaConn" ].ConnectionString;
SqlConnection conn = new SqlConnection(connstr);
SqlDataAdapter adapter = new SqlDataAdapter(query, conn);
DataSet ds = new DataSet();
adapter.Fill(ds, "tree" );
return ds.Tables[ "tree" ].DefaultView;
}
private void AddChildNode(TreeNode tn)
{
//填充二级节点,它需要一级节点的Value值,所以送了一个完整的根节点对象
int bid = Convert.ToInt32(tn.Value);
DataView dv = drv( "select * from class where bid=" + bid + "" );
foreach (DataRowView datas in dv)
{
TreeNode ctn = new TreeNode();
ctn.Text = datas[ "title" ].ToString();
ctn.Value = datas[ "cid" ].ToString();
//ctn.Expanded = false;
ctn.NavigateUrl = "http://thcjp.cnblogs.com/jiashe.aspx?aa=" + datas[ "cid" ].ToString();
/*
* XXXXXXXXX添加到子节点上XXXXXXXXXXX
*/
tn.ChildNodes.Add(ctn);
}
}
protected void Button1_Click( object sender, EventArgs e)
{ //将选中项的值打印出来
if (TreeView1.CheckedNodes.Count > 0)
{
foreach (TreeNode tn in TreeView1.CheckedNodes)
{
//迭代所有被选中的项
if (tn.ChildNodes.Count > 0)
{
//如果被选中项下面还有子节点
foreach (TreeNode ctn in tn.ChildNodes)
{
//迭代所有子节点,把值读出来
Response.Write(ctn.Text + "<br>" );
}
}
else
{
//如果没有子节点,说明是叶节点,那么直接读取被选值
Response.Write(tn.Text + "<br>" );
}
}
}
}
protected void TreeView1_SelectedNodeChanged( object sender, EventArgs e)
{ //点击了没有链接的节点(前提是其SelectAction为Select)
Label2.Text = TreeView1.SelectedNode.Text;
}
protected void TreeView1_TreeNodeExpanded( object sender, TreeNodeEventArgs e)
{
Label2.Text = "你展开了" + e.Node.Text;
}
protected void TreeView1_TreeNodeCollapsed( object sender, TreeNodeEventArgs e)
{
Label2.Text = "你折叠了" + e.Node.Text;
}
}
|
+ = = = = = = = = = = = = = = = = = = +
附:
TreeView 和 Menu 控件之间的一些区别
TreeView 和 Menu 控件之间的一些区别,以帮助您为特定的方案选择适当的控件。
功能 | Menu | TreeView |
展开 | 弹出 | 就地展开 |
按需下载 | 否 | 是 |
复选框 | 否 | 是 |
模板 | 是 | 否 |
布局 | 水平和垂直 | 垂直 |
样式选项 | 是 | 否 |
选择模型 | 静态级别、动态级别 | 或父/根/叶、或按数据项 |
好东西 值得分享!