Sharepoint 2013 CamlQuery从特定文件夹检索文件夹和文件
您好,我正在与sharepoint designer 2013合作,文档库Web部件的结构如下:Sharepoint 2013 CamlQuery从特定文件夹检索文件夹和文件,sharepoint-2013,caml,Sharepoint 2013,Caml,您好,我正在与sharepoint designer 2013合作,文档库Web部件的结构如下: Folder1 SubFolder1 SubFile1.txt SubFile2.txt File1.txt 我设法以Folder1为目标,但它在同一级别显示所有内容,包括子文件夹1、子文件1.txt、子文件2.txt和文件1.txt。但我想要的是子文件夹1和File1.txt。然后,如果我们点击子文件夹1,我们就有文件在里面。 像这样的 我所做的: <Query>
Folder1
SubFolder1
SubFile1.txt SubFile2.txt
File1.txt
我设法以Folder1为目标,但它在同一级别显示所有内容,包括子文件夹1、子文件1.txt、子文件2.txt和文件1.txt。但我想要的是子文件夹1和File1.txt。然后,如果我们点击子文件夹1,我们就有文件在里面。
像这样的
我所做的:
<Query><Where><Contains><FieldRef Name="FileDirRef"/><Value Type="Text">pathOfFolder1</Value></Contains></Where></Query>
pathoffolder 1
我将作用域设置为recursiveAll,并尝试了“All”,但没有成功。下面的示例供您参考:
<style>
input[type=button] {
background: #ccc;
border: 0 none;
cursor: pointer;
-webkit-border-radius: 0px;
border-radius: 0px;
margin-left: 0px !important;
font-size: small;
font-weight: bold;
}
.dupHier img {
padding-right: 10px;
}
.dupHier a {
position: relative;
top: -2px;
}
.dupHier {
padding-top: 5px;
padding-bottom: 5px;
}
</style>
<!--To Populate Libraries-->
<select id="drpSelectSourceLibrary"></select>
<!--To Populate Levels on click-->
<input class="getLevels" name="getLevels" type="button" value="Get Levels" onclick="return false;" />
<!--To Populate Hidden Levels-->
<div class="genHier"></div>
<hr />
<!--To Populate Hierarchy Visible on page-->
<div class="dupHenHier"></div>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script type="text/javascript">
//Site Context URL
var spctx = _spPageContextInfo.siteAbsoluteUrl;
//Array to Store all the objects
var hm = [];
//Object involving File/Folder name, path, level in hierarchy, whether it is file or folder
function hierMaker(name, path, level, isFile) {
this.name = name;
this.path = path;
this.level = level;
this.isFile = isFile;
}
var virtualLevel = 0;
var boolVirtual = true;
var maxLevel = 0;
function getLevels() {
//Reset global variables
hm.length = 0;
virtualLevel = 0;
boolVirtual = true;
maxLevel = 0;
tctr = 1;
$('.genHier').html("");
$('.dupHenHier').html("");
//Main code below
var appWebUrl = spctx;
var listName = $("#drpSelectSourceLibrary option:selected").text();
var certURL = appWebUrl + "/_api/web/lists/getbytitle('" + listName + "')/items?$expand=Folder,File&$select=ID,Title,FileLeafRef,Folder/ServerRelativeUrl,File/ServerRelativeUrl";
$.ajax({
url: certURL,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
getFolderSchema(data.d.results);
},
error: function (data) {
alert(JSON.stringify(data));
}
});
function getFolderSchema(data) {
maxLevel = 0;
dLength = data.length;
if (dLength >= 0) {
for (var i = 0; i < dLength; i++) {
if (boolVirtual) {
if (data[i].Folder.ServerRelativeUrl) {
virtualLevel = data[i].Folder.ServerRelativeUrl.split('/').length;
boolVirtual = false;
}
else {
virtualLevel = data[i].File.ServerRelativeUrl.split('/').length;
boolVirtual = false;
}
}
var isFile = false;
var path = "";
var level = 0;
if (data[i].Folder.ServerRelativeUrl) {
//It is folder
isFile = false;
path = data[i].Folder.ServerRelativeUrl;
level = data[i].Folder.ServerRelativeUrl.split('/').length - virtualLevel;
}
else {
//It is file
isFile = true;
path = data[i].File.ServerRelativeUrl;
level = data[i].File.ServerRelativeUrl.split('/').length - virtualLevel;
}
var tmpDiv = "<div class='subHier' isFile='" + isFile + "' level='" + level + "' path='" + path + "'><a href='" + path + "' target='_blank'>" + data[i].FileLeafRef + "</a></div>";
$(".genHier").append(tmpDiv);
maxLevel++;
var hmsc = new hierMaker(data[i].FileLeafRef, path, level, isFile);
hm.push(hmsc);
}
providePaddding();
}
}
}
var d = 1;
function providePaddding() {
var kickCtr = 0;
var hmlength = hm.length;
for (var j = 0; j < hmlength; j++) {
//Creation of level 0 elements
if (hm[j].level == 0) {
var tmpDiv = "";
if (hm[j].isFile) {
tmpDiv = "<div class='dupHier' isFile='" + hm[j].isFile + "' level='" + hm[j].level + "' path='" + hm[j].path + "'><img src='" + file + "' /><a href='" + hm[j].path + "' target='_blank'>" + hm[j].name + "</a></div>";
}
else {
tmpDiv = "<div class='dupHier' isFile='" + hm[j].isFile + "' level='" + hm[j].level + "' path='" + hm[j].path + "'><img src='" + folder + "' /><a href='" + hm[j].path + "' target='_blank'>" + hm[j].name + "</a></div>";
}
kickCtr++;
$('.dupHenHier').append(tmpDiv);
}
}
call();
}
var tctr = 1;
var folder = spctx + "/Style Library/folder.JPG";
var file = spctx + "/Style Library/file.JPG";
function call() {
$('.dupHier').each(function () {
if ($(this).attr('isDone')) {
//continue;
}
else {
for (var j = 0; j < hm.length; j++) {
if (hm[j].level == tctr) {
var str = hm[j].path + "";
var ts = $(this).attr('path');
var tmpDiv = "";
if (str.indexOf(ts) > -1) {
if (hm[j].isFile) {
tmpDiv = "<div class='dupHier' isFile='" + hm[j].isFile + "' level='" + hm[j].level + "' path='" + hm[j].path + "'><img src='" + file + "'/><a href='" + hm[j].path + "' target='_blank'>" + hm[j].name + "</a></div>";
}
else {
tmpDiv = "<div class='dupHier' isFile='" + hm[j].isFile + "' level='" + hm[j].level + "' path='" + hm[j].path + "'><img src='" + folder + "'/><a href='" + hm[j].path + "' target='_blank'>" + hm[j].name + "</a></div>";
}
$(this).append(tmpDiv);
}
}
}
}
$(this).attr('isDone', true);
});
tctr++;
if (tctr < 10)
call();
//Provide padding as per level, level * 10px
$('.dupHier').each(function () {
var tmpPad = $(this).attr('level') * 10 + "px";
$(this).css({ "padding-left": tmpPad });
});
}
$(document).ready(function () {
$('.getLevels').click(function () {
getLevels();
});
$('.genHier').hide();
});
//Population of libraries
ExecuteOrDelayUntilScriptLoaded(loadDocLibraries, "SP.js");
function loadDocLibraries() {
var clientContext = new SP.ClientContext.get_current();
web = clientContext.get_web();
clientContext.load(web);
listColl = web.get_lists();
clientContext.load(listColl);
clientContext.executeQueryAsync(onLibSuccess, onLibfail);
}
function onLibSuccess() {
var listEnumerator = listColl.getEnumerator();
var Lib = "";
$('#drpSelectSourceLibrary').empty();
$("#drpSelectSourceLibrary").prepend('<option value="Select" selected="selected">Select Documents Library</option>');
while (listEnumerator.moveNext()) {
var list = listEnumerator.get_current();
var value = list.get_hidden();
//console.log(value);
if (list.get_baseTemplate() == '101') {
if (value == false) {
var x = document.getElementById("drpSelectSourceLibrary");
var option = document.createElement("option");
var filename = list.get_title();
option.text = filename;
x.add(option);
}
}
}
}
function onLibfail() {
console.log(arguments[1].get_message());
}
</script>
输入[类型=按钮]{
背景:#ccc;
边界:0无;
光标:指针;
-webkit边界半径:0px;
边界半径:0px;
左边距:0px!重要;
字体大小:小;
字体大小:粗体;
}
杜希尔先生{
右边填充:10px;
}
杜希尔先生{
位置:相对位置;
顶部:-2px;
}
杜希尔先生{
垫面:5px;
垫底:5px;
}
//站点上下文URL
var spctx=_spPageContextInfo.siteAbsoluteUrl;
//数组来存储所有对象
var hm=[];
//涉及文件/文件夹名称、路径、层次结构中的级别(无论是文件还是文件夹)的对象
函数hierMaker(名称、路径、级别、isFile){
this.name=名称;
this.path=path;
这个水平=水平;
this.isFile=isFile;
}
var virtualLevel=0;
var boolVirtual=true;
var maxLevel=0;
函数getLevels(){
//重置全局变量
hm.length=0;
虚拟水平=0;
boolVirtual=true;
maxLevel=0;
tctr=1;
$('.genHier').html(“”);
$('.dupHenHier').html(“”);
//主代码如下
var appWebUrl=spctx;
var listName=$(“#drpSelectSourceLibrary选项:选中”).text();
var certURL=appWebUrl+“/”api/web/lists/getbytitle(“+listName+”)/items?$expand=Folder,File&$select=ID,Title,FileLeafRef,Folder/serverrelativeul,File/serverrelativeul”;
$.ajax({
url:certURL,
方法:“获取”,
标题:{“Accept”:“application/json;odata=verbose”},
成功:功能(数据){
getFolderSchema(data.d.results);
},
错误:函数(数据){
警报(JSON.stringify(数据));
}
});
函数getFolderSchema(数据){
maxLevel=0;
dLength=data.length;
如果(数据长度>=0){
对于(变量i=0;i-1){
if(hm[j].isFile){
tmpDiv=“”;
}
否则{
tmpDiv=“”;
}
$(此).append(tmpDiv);
}
}
}
}
$(this.attr('isDone',true);
});
tctr++;
如果(tctr<10)
call();
//按照级别提供填充,级别*10px
$('.dupHier')。每个(函数(){
var tmpPad=$(this.attr('level')*10+“px”;
$(this.css({“padding left”:t