[SharePoint]简单实现Treeview Navigation
Treeview Navigation是一个用树形结构显示当前站点导航结构的SharePoint WebPart, 详细情况请看:http://www.cnblogs.com/rickie/archive/2004/12/18/78665.html 。
Treeview Navigation是通过作者自己写的一个MyTreeView控件来显示的,但这个控件没有开放源代码。我就用Microsoft.Web.UI.WebControls.TreeView自己写了一个简单的Treeview Navigation,代码如下:
[System.ComponentModel.Description("AreaTreeView")]
public class AreaTreeView : System.Web.UI.UserControl, SmartPart.IUserControl
{
protected System.Web.UI.WebControls.Label ErrorMessage;
protected Microsoft.Web.UI.WebControls.TreeView AreaList;
protected const string ImagesFolder = "wpresources/images/";
private bool _isExpanded = true;
private string _expandLevel;
private Microsoft.SharePoint.SPWeb _spweb;
"public properties"
private void Page_Load(object sender, System.EventArgs e)
{
try
{
if(ExpandLevel != null)
{
AreaList.ExpandLevel = int.Parse(ExpandLevel);//TreeView的展开深度
}
if(AreaList.Nodes.Count>0)
{
AreaList.Nodes.Clear();//清除已有节点
}
SPWeb spweb = null;
SPWebCollection subWebs = null;
TreeNode node = new TreeNode();//定义根节点
spweb = SPControl.GetContextWeb(Context);//获取当前Web站点
subWebs = spweb.GetSubwebsForCurrentUser();//获取当前站点下的所有子站点
if(this.SPWeb.ID == spweb.ID)
{
node.Text = "<b>"+spweb.Title+"</b>";//当前站点粗体显示
}
else
{
node.Text = spweb.Title;
}
node.Expanded = this.IsExpanded;//是否展开根节点
node.NavigateUrl = spweb.Url;
AreaList.Nodes.Add(node);
AddTreeNode(spweb,AreaList.Nodes[0]);//调用递归函数生成所有子节点
}
catch(Exception ex)
{
ErrorMessage.Text = ex.Message;
}
}
private void AddTreeNode(SPWeb currentWeb, TreeNode parentNode)
{
foreach(SPWeb web in currentWeb.GetSubwebsForCurrentUser())
{
TreeNode node = new TreeNode();
if(this.SPWeb.ID == web.ID)
{
node.Text = "<b>"+web.Title+"</b>";
}
else
{
node.Text = web.Title;
}
node.NavigateUrl = web.Url;
parentNode.Nodes.Add(node);
AddTreeNode(web,node);
}
}
Web 窗体设计器生成的代码
}
源代码下载地址:https://files.cnblogs.com/dudu/AreaTreeView.rar
部置方法:
1、下载并安装iewebcontrols:https://files.cnblogs.com/dudu/iewebcontrols.rar
2、如果没有安装SmartPart 1.0, 请下载并安装:http://www.gotdotnet.com/workspaces/workspace.aspx?id=6cfaabc8-db4d-41c3-8a88-3f974a7d0abe
3、排除管理路径webctrl_client,该目录是在安装iewebcontrols时生成的,如果不排除的话,就无法显示TreeView(经过kaneboy的指点, 我才知道这个的, 感谢kaneboy),操作方法:在Windows SharePoint Services 管理中心=》配置虚拟服务器设置=》选择你的虚拟服务器=》定义管理路径中添加新路径webctrl_client(排除的路径)。
4、将DUDU.AreaTreeView.dll复制到SharePoint站点的bin目录中(如果没有该目录,就手工创建)。
5、将AreaTreeView.ascx复制到SharePoint站点的UserControls目录中(如果没有该目录,就手工创建)。
我觉得Treeview Navigation如果只显示站点与子站点的结构,并不是很实用,我们更需要显示区域的结构,这样才能全面显示站点的导航结构,使用起来才更方便,所以我想开发一个显示区域结构的AreaTreeView。
Treeview Navigation是通过作者自己写的一个MyTreeView控件来显示的,但这个控件没有开放源代码。我就用Microsoft.Web.UI.WebControls.TreeView自己写了一个简单的Treeview Navigation,代码如下:










































































源代码下载地址:https://files.cnblogs.com/dudu/AreaTreeView.rar
部置方法:
1、下载并安装iewebcontrols:https://files.cnblogs.com/dudu/iewebcontrols.rar
2、如果没有安装SmartPart 1.0, 请下载并安装:http://www.gotdotnet.com/workspaces/workspace.aspx?id=6cfaabc8-db4d-41c3-8a88-3f974a7d0abe
3、排除管理路径webctrl_client,该目录是在安装iewebcontrols时生成的,如果不排除的话,就无法显示TreeView(经过kaneboy的指点, 我才知道这个的, 感谢kaneboy),操作方法:在Windows SharePoint Services 管理中心=》配置虚拟服务器设置=》选择你的虚拟服务器=》定义管理路径中添加新路径webctrl_client(排除的路径)。
4、将DUDU.AreaTreeView.dll复制到SharePoint站点的bin目录中(如果没有该目录,就手工创建)。
5、将AreaTreeView.ascx复制到SharePoint站点的UserControls目录中(如果没有该目录,就手工创建)。
我觉得Treeview Navigation如果只显示站点与子站点的结构,并不是很实用,我们更需要显示区域的结构,这样才能全面显示站点的导航结构,使用起来才更方便,所以我想开发一个显示区域结构的AreaTreeView。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~