zoukankan      html  css  js  c++  java
  • MOSS2007开发Demo系列(1)——用TreeView显示SharePoint网站文件夹结构(SPFolder)

    TreeView控件的节点加载一般有两种方式,静态加载与动态加载,下面分别进行实现。

    (1) 静态加载节点,一次加载所有节点

    创建用户控件FolderTree1.ascx ,在ascx页面拖一个Button和TreeView上去,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 Microsoft.SharePoint;

    public partial class FolderTree1 : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {       
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //获取当前网站实例
            SPWeb mySPWeb = SPContext.Current.Web;

            //添加第一个节点作为临时根节点
            TreeNode firstNode = new TreeNode();
            TreeView1.Nodes.Add(firstNode);

            //读取SharePoint网站文件结构,填充TreeView节点
            CreateTree(mySPWeb.RootFolder, firstNode);

            //删除先前添加的第一个临时节点,以网站根文件夹作为根节点
            //(一般SharePoint根文件夹Text属性为空,因此取网站名作为根节点Text值)
            TreeNode rootNode = firstNode.ChildNodes[0];
            rootNode.Text = mySPWeb.Title;
            TreeView1.Nodes.Remove(firstNode);
            TreeView1.Nodes.Add(rootNode);
        }

        //读取网站结构并填充到TreeView控件的递归函数
        protected void CreateTree(SPFolder myFolder, TreeNode myNode)
        {
            //添加当前文件夹节点到TreeView
            TreeNode newNode = new TreeNode(myFolder.Name );
            myNode.ChildNodes.Add(newNode);

            //添加当前文件夹下的文件节点到TreeView
            foreach (SPFile myFile in myFolder.Files)
            {
                TreeNode childNode = new TreeNode(myFile.Name);
                newNode.ChildNodes.Add(childNode);
            }

            //递归调用,添加当前文件夹的子文件夹节点
            foreach (SPFolder mySubFolder in myFolder.SubFolders)
            {
                CreateTree(mySubFolder, newNode);
            }
        }
    }

    (2)动态加载节点,只在展开节点时加载其子节点

    创建用户控件FolderTree2.ascx ,在ascx页面拖一个Button和TreeView上去,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 Microsoft.SharePoint;

    public partial class FolderTree2 : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            SPWeb myWeb = SPContext.Current.Web;

            //页面载入时只加载根节点
            TreeNode rootNode = new TreeNode(myWeb.Title);
            rootNode.Value = myWeb.Url;
            rootNode.PopulateOnDemand = true;
            TreeView1.Nodes.Add(rootNode);
        }

        //节点展开时加载其子节点
        protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
        {
            //获取当前节点及当前文件夹
            TreeNode currentNode = e.Node;
            SPFolder currentFolder = SPContext.Current.Web.GetFolder(currentNode.Value);

            //加载当前文件夹下的文件节点
            foreach (SPFile theFile in currentFolder.Files)
            {
                TreeNode fileNode = new TreeNode(theFile.Name);
                currentNode.ChildNodes.Add(fileNode);
            }
            //加载当前文件下的文件夹节点
            foreach (SPFolder theFolder in currentFolder.SubFolders)
            {
                TreeNode folderNode = new TreeNode(theFolder.Name);
                folderNode.Value = theFolder.Url;
                folderNode.PopulateOnDemand = true;
                currentNode.ChildNodes.Add(folderNode);
            }
        }
    }

    用户控件FolderTree1.ascx ,FolderTree2.ascx 做好后可以用WebPart包装器QuickPart部署到SharePoint网站,或者直接创建页面部署到SharePoint服务器上。

    完整代码下载:http://moss2007demos.googlecode.com/files/Demo1.rar

    显示效果如下图:

     

  • 相关阅读:
    git shell自动打tag
    git 获取最新的匹配到的tag
    centOS debian ubuntu 一键安装 docker 教程
    git将当前分支的修改推到其他分支
    MusicPlayer2
    Ventoy 多合一启动盘制作工具神器
    electron-builder 下载 electron过慢或报错的解决办法
    解决npm install 报错“npm WARN pug-loader@2.4.0 requires a peer of pug@^2.0.0 but none is installed. You must install peer dependencies yourself.“
    全能笔记软件 Notion 的“中国版" wolai
    Your branch is behind 'origin/master' by N commits, and can be fast-forwarded 解决方法
  • 原文地址:https://www.cnblogs.com/yigedaizi/p/1457825.html
Copyright © 2011-2022 走看看