Как исправить 'Filter Lookup по текущему пользователю, используя CAML - PullRequest
1 голос
/ 04 июля 2019

Я фильтрую столбец поиска в SharePoint Online, но получаю сообщение об ошибке, если проверяю в браузере и фильтрация не работает.

Я использовал jquery.SPServices.SPGetCurrentUser, чтобы получить данные пользователя, вошедшего в систему. Затем запрос CAML для фильтрации и получения плана активности списка.

    <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
    <script 
src="//cdnjs.cloudflare.com/ajax/libs/jquery.SPServices/2014.02/jquery.SPServices-2014.02.min.js"></script>

    <script type="text/javascript">
    let custom = {}
    custom.myQuery = jQuery;
    console.log(custom)
    console.log($().SPServices.SPGetCurrentUser({
      fieldNames: ["ID", "Name", "Title", "Email","DepartMent", "JobTitle", 
      "FirstName", "LastName", "UserName", "SIP Address"],
      debug: false
    }));
    var userId = $().SPServices.SPGetCurrentUser({
      fieldName: "ID",
      debug: false
    })

    _spBodyOnLoadFunctionNames.push("loadSP")

    function loadSP() {
      var query = `<Query><Where><And><Eq><FieldRef Name='AssignedTo' 
      LookupId='TRUE'/><Value Type='Integer'>${userId}</Value></Eq><Eq> 
      <FieldRef Name='Status' LookupId='TRUE'/><Value 
      Type='Text'>Approved</Value></Eq></And></Where></Query>`;
      custom.myQuery().SPServices({
          operation: "GetListItems",
          async: false,
          listName: "Activity Plan",
          CAMLQuery: query,
          //CAMLQueryOptions: "<QueryOptions><ViewAttributes 
          Scope='RecursiveAll' IncludeRootFolder='True' /></QueryOptions>",
          CAMLViewFields: `<ViewFields>   
          <FieldRef Name='Deliverable' />
          <FieldRef Name='Task Status' />
          <FieldRef Name='ID' />
          </ViewFields>`,
          completefunc: function (xData, Status) {
            var newSites = "(none)";
            var ID = "0";
            console.log(xData)
            $(xData.responseXML).find("z\\:row, row").each(function () {

               var DeliverableLookup = $(this).attr("Deliverable");
               var owId = $(this).attr("ID");

               if (DeliverableLookup != '') {
                  var newValue = DeliverableLookup;
                  if (newSites.indexOf(newValue) == -1) {

                     newSites = newSites + "|" + newValue;
                     ID += '| ' + owId;
                   }
                }
             });

             updateValues(newSites, ID);
          }
        });
    }

    function getField(fieldType,fieldTitle) {
       var docTags = document.getElementsByTagName(fieldType);
       for (var i=0; i < docTags.length; i++) {
          if (docTags[i].title == fieldTitle) {
              return docTags[i];
          }
       }
       return false;
    }

    function updateValues(newSites, ID) {
       lookupFieldText = getField('select','My Planned Tasks');
       //lookupFieldId = document.getElementById(lookupFieldText.id);
       $(lookupFieldText).empty();

       let arrSites = newSites.split('|');
       let arrId = ID.split('|');
       for (let i = 0; i < arrSites.length; i++){
         $(lookupFieldText).append(`<option id='${arrId[i]}' 
         value='${arrSites[i]}'> ${arrSites[i]} </option>`)
       }
       //lookupFieldText.choices = newSites;
    }

    function CustomAction(){
      console.log("done loading")
    }
</script>

Я ожидаю, что в столбце поиска «Мои запланированные задачи» будут показаны только те результаты, которые я создал и которые имеют статус «Утверждено», но вместо этого он возвращает все задачи.

1 Ответ

0 голосов
/ 04 июля 2019

Проверьте зарегистрированные данные консоли и посмотрите, что возвращается, если ничего не возвращается, проверьте, является ли ваш статус истинным, а если нет, то ваш запрос неправильный. Проверьте пробелы в запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...