zoukankan      html  css  js  c++  java
  • [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。


  • 相关阅读:
    112th LeetCode Weekly Contest Validate Stack Sequences
    112th LeetCode Weekly Contest Minimum Increment to Make Array Unique
    C# 有关系统音量的操作
    C# 关于时区的操作
    WordPress 设置GeoIP数据库目录权限时错误解决方案
    AtCoder Beginner Contest 113 C
    AtCoder Beginner Contest 113 B
    AtCoder Beginner Contest 113 A
    将Tomcat注册为Windows服务
    常用的调试方法
  • 原文地址:https://www.cnblogs.com/dudu/p/79962.html
Copyright © 2011-2022 走看看