递归法绑定文件夹到导航树&在指定文件夹下新建文件夹
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["listName"] != null)
{
BindLibConstruct(Request.QueryString["listName"]);
}
}
} //利用递归法将指定的文档库(这里是Document Library)绑定到treeview上
public void BindLibConstruct(string listName)
{
SPWeb web = SPContext.Current.Web;
SPList list = web.Lists[listName];
SPFolderCollection folders = list.RootFolder.SubFolders; //将文档库设为根节点(文档库本身也是一个文件夹)
TreeNode rootNode = new TreeNode();
rootNode.Text = list.RootFolder.Name;
rootNode.Value = list.RootFolder.UniqueId.ToString();
trvwLibConstruct.Nodes.Add(rootNode); foreach (SPFolder folder in folders) //遍历第一级的文件夹
{
if (folder.Name == "Forms")//去掉默认的系统文件夹
{
continue;
}
TreeNode parentnode = new TreeNode();
parentnode.Text = folder.Name;
parentnode.Value = folder.UniqueId.ToString();//将文件夹得GUID存入到节点的value中
rootNode.ChildNodes.Add(parentnode);
ChildDocFolder(folder, parentnode); //遍历第一级文件夹下的每一个文件夹
}
} /// <summary>
/// 递归方法读取文档库
/// </summary>
/// <param name="folder">父文件夹</param>
/// <param name="currentNode">当前节点</param>
private void ChildDocFolder(SPFolder folder, TreeNode currentNode)
{
string url = SPContext.Current.Web.Url;
if (folder.SubFolders.Count == 0)// //如果不存在子文件夹就返回
{
return;
}
else
{
foreach (SPFolder spfolder in folder.SubFolders)
{
if (spfolder.Name == "Forms")//去掉默认的系统文件夹
{
continue;
}
TreeNode node = new TreeNode();
node.Text = spfolder.Name;
node.Value = spfolder.UniqueId.ToString();
currentNode.ChildNodes.Add(node);//添加当前文件夹到TreeView中
//node.Parent.SelectAction = TreeNodeSelectAction.Expand; //设置点击节点为展开
ChildDocFolder(spfolder, node); //递归添加文件夹
}
}
} protected void btnNewFolder_Click(object sender, EventArgs e)
{
string folderText = txtNewFolder.Text;
//在指定文件夹下新增一个文件夹;
Guid folderGuid = Guid.Parse(trvwLibConstruct.SelectedNode.Value);
SPList list = SPContext.Current.Web.Lists[Request.QueryString["listName"]];
//SPDocumentLibrary list = SPContext.Current.Web.Lists[Request.QueryString["listName"]] as SPDocumentLibrary; //在指定文件夹下新建一个文件夹。最高一级文件夹如BBSMovie无法这样取得,替代方案可以是SPContext.Current.Web.GetFolders(Guid)或者是分情况
//SPFolder parentFolder = list.GetItemByUniqueId(folderGuid).Folder;
SPFolder parentFolder = list.RootFolder;
if (folderGuid != list.RootFolder.UniqueId)
{
parentFolder = list.GetItemByUniqueId(folderGuid).Folder;
}
//允许创建文件夹。
list.EnableFolderCreation = true;
foreach (SPFolder subFolder in parentFolder.SubFolders)
{
if (txtNewFolder.Text==subFolder.Name)
{
Response.Write("<script language='javascript'>alert('已有相同名称的文件夹存在');</script>");
return;
}
}
//在指定文件夹下新建一个类型为文件夹名字为 txtNewFolder.Text的文件夹
SPListItem item = list.AddItem(parentFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, txtNewFolder.Text);
//item["Title"] = txtNewFolder.Text;
item.Update();
list.Update(); //在导航树上添加新建的文件夹节点
TreeNode node = new TreeNode(txtNewFolder.Text, item.UniqueId.ToString());
trvwLibConstruct.SelectedNode.ChildNodes.Add(node);
}
效果图:


递归法绑定文件夹到导航树&在指定文件夹下新建文件夹的更多相关文章
- 在res文件下新建文件夹
今天遇到了在res下新建文件夹的问题,无论是是Android studio中直接建还是在下载Android studio的物理地址中直接新建一个文件夹,在树结构中始终没有见到新建的文件,原来需要把An ...
- mac 根目录下新建文件夹并赋予权限
在根目录中,你会发现你无法创建文件夹,即使使用命令也无法创建目录: 1.修改auto_master 编译 /etc/auto_master 文件,注释掉或者移除以 /home 开头的那一行,保存. 终 ...
- linux 下新建文件自动加锁的解决办法
导致文件夹里面无法保存别的文件 sudo chmod 777 -R 文件或目录
- git bash 下操作文件及文件夹命令
1, cd : change directory的简写,改变目录的意思,就是切换到哪个目录下, 如 cd e:\fff 切换 E 盘下面的fff 目录. 当我们用cd 进入文件夹时,我们可以使用 通 ...
- [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件
写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...
- python查看文件夹下所有文件
实现查看所有文件,重点在于文件夹下又有文件夹时怎样处理,这里通过os模块来解决. 方法一 : 通过递归实现遍历所有文件夹 import os def func(path): for i in os.l ...
- win10没有新建文件夹
win10没有新建文件夹 win10系统,电脑点击右键没有新建文件夹选项. 工具/原料 win10 系统台式机 方法/步骤 电脑左下角搜素出输入:cmd 出现以下画面 在命令指示符 ...
- shell获取目录下所有文件夹的名称并输出
获取指定目录/usr/下所有文件夹的名称并输出: shell代码: #!/bin/bash #方法一 dir=$(ls -l /usr/ |awk '/^d/ {print $NF}') for i ...
- [实战]MVC5+EF6+MySql企业网盘实战(11)——新建文件夹2
写在前面 上篇文章实现了创建文件夹的功能,这里面将实现单击文件夹,加载列表的功能. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网 ...
随机推荐
- 【解决】国内访问github过慢
github在国内慢的有点不能忍了,受不了了google了一下有什么方法没,还真找到一些方法. 死马当活马医,操作完之后确实速度上快了一些,但是毕竟国情所限,仍然做不到“秒开”. 主要是参考两篇博客: ...
- homework-01 博客记录
程序思路: 一维的主要思想是:最大序列的初始项一定是正数,然后在此项基础上向后遍历,当该连续序列的的总和小于或等于0时,就是这个序列的断点,因为若把该序列当做一个数则为负数,一定不是另一个序列的初始. ...
- .Net中的Placeholder控件
NET中的placeholder控件用来做什么的?其实PLACEHOLDER控件,是用来做动态加载用户自定义控件时,一个占位置作用的控件,比如 在从一个Web页面转换到另一个Web页面时,你的ASP. ...
- C++学习笔记(十):类
类的定义: C++中使用关键字 class 来定义类, 其基本形式如下: class 类名 { public: //公共的行为或属性 protected: //受保护的行为或属性 private: / ...
- Java循环语句 for
语法: 特点:相比 while 和 do...while 语句结构更加简洁易读 例如,输出 1000 遍"我爱慕课网",使用 for 的实现代码为: 需要留心的几个小细节: 1. ...
- mysql之字符集与校对集
一.字符集 1.mysql的字符集设置非常灵活 可以设置服务器默认字符集: 数据库默认字符集: 表默认字符集: 列字符集: 如果某一级别没有指定字符集,则继承上一级. 查看所有字符集语句:show c ...
- vs2005升级到vs2010相关问题
1.项目编译失败,报 Resgen.exe 退出 ,错误代码2 处理方式: http://jingyan.baidu.com/article/90895e0fe80c6064ed6b0b6b.html ...
- cocos2d-x之蒙板,局部高亮可点,CCRenderTexture
转自:http://www.2cto.com/kf/201207/144656.html 蒙板,局部高亮可点的用处大多是在新手引导的时候,引导玩家一步一步的走游戏的操作流程. 之前写了一个cocos2 ...
- JQuery.Ajax之错误调试帮助信息介绍
下面是Jquery中AJAX参数详细列表: timeout Number 设置请求超时时间(毫秒).此设置将覆盖全局设置. async Boolean (默认: true) 默认设置下,所有请求均为异 ...
- MyEclipse与Mysql数据库的连接
1.载入MySql驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 载入MySql驱动程序 2.建立Connection连接对象 ...