Как искать файл в наборе документов? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь написать CAML-запрос для поиска определенного файла, по имени файла, в определенном наборе документов.

Это запрос, над которым я работаю:


        <Query>
              <Where>
                 <Eq>
                    <FieldRef Name='FileLeafRef' />
                    <Value Type='File'>TestFile.txt</Value>
                 </Eq>
              </Where>
           </Query>
           <QueryOptions>


      <Folder>https://acme.com/sites/mysite/MyDocLib/MyDocSetName</Folder>
          </QueryOptions>

Поскольку в наборе документов MyDocSetName есть файл TestFile.txt, я ожидаю получить результат, но ничего не возвращается. Что я делаю не так?

1 Ответ

1 голос
/ 16 апреля 2019

Пример проверенного скрипта на основе этой демонстрации .

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script language="javascript" type="text/javascript">

        $(document).ready(function() {
            var scriptbase = _spPageContextInfo.webServerRelativeUrl + "/_layouts/15/";
            $.getScript(scriptbase + "SP.Runtime.js", function() {
                $.getScript(scriptbase + "SP.js", function() {
                    $.getScript(scriptbase + "SP.DocumentManagement.js", createDocumentSet);
                });
            });
        });
        var docSetFiles;

        function createDocumentSet() {
            //Get the client context,web and library object.
            clientContext = new SP.ClientContext.get_current();
            oWeb = clientContext.get_web();
            var oList = oWeb.get_lists().getByTitle("DocSet");
            clientContext.load(oList);
            //Get the root folder of the library
            oLibraryFolder = oList.get_rootFolder();
            var documentSetFolder = "/DocSet/test1";
            //Get the document set files using CAML query
            var camlQuery = SP.CamlQuery.createAllItemsQuery();
            camlQuery.set_viewXml("<View><Query><Where><Eq><FieldRef Name='FileLeafRef'/><Value Type='Text'>test2.docx</Value></Eq></Where></Query></View>");
            camlQuery.set_folderServerRelativeUrl(documentSetFolder);
            docSetFiles = oList.getItems(camlQuery);
            //Load the client context and execute the batch
            clientContext.load(docSetFiles, 'Include(File)');
            clientContext.executeQueryAsync(QuerySuccess, QueryFailure);
        }

        function QuerySuccess() {
            //Loop through the document set files and get the display name
            var docSetFilesEnumerator = docSetFiles.getEnumerator();
            while (docSetFilesEnumerator.moveNext()) {
                var oDoc = docSetFilesEnumerator.get_current().get_file();
                console.log("Document Name : " + oDoc.get_name());
            }
        }

        function QueryFailure() {
            console.log('Request failed - ' + args.get_message());
        }
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...