Sharepoint 2013 CamlQuery从特定文件夹检索文件夹和文件

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>

您好,我正在与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><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