简体   繁体   English

如何解决:在 sharepoint online 中保存按当前用户和状态过滤的查找

[英]How to fix: Save filtered lookup by current user and status in sharepoint online

I filtered a lookup field by current user id and status using "SP.js CSOM SP.ClientContext" and it was successful in filtering the lookup.我使用“SP.js CSOM SP.ClientContext”按当前用户 ID 和状态过滤了一个查找字段,并且成功过滤了查找。 But trying to save gave an error "Sorry, Something went wrong", with a correlation ID "9b40ec9e-1004-8000-bbff-36490b07f284".但是尝试保存会出现错误“抱歉,出了点问题”,相关 ID 为“9b40ec9e-1004-8000-bbff-36490b07f284”。 Note: if i take off the filtering, it saves just fine.注意:如果我取消过滤,它保存得很好。

I tried using other methods of filtering, using CAML queries and JSOM Ajax calls.我尝试使用其他过滤方法,使用 CAML 查询和 JSOM Ajax 调用。 All filtering were successful but saving didn't work.所有过滤都成功但保存不起作用。

  SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);

  function sharePointReady(){
     getItemsFromView("Activity Plan", "Approved",
         function(items){
             var field = getField("select", "My Planned Tasks")

              for(var i = 0; i < items.get_count(); i++){
                  var item = items.get_item(i);
                  var node = document.createElement("option");
                  var textnode = document.createTextNode(item.get_item('Deliverable'));
                  node.appendChild(textnode);
                  field.appendChild(node);

               }
           },
           function(sender,args){ 
              console.log(args.get_message())
           }
       );
    }

  function getItemsFromView(listTitle, viewTitle,success,error){
     var ctx = new SP.ClientContext();
     var list = ctx.get_web().get_lists().getByTitle(listTitle);
     var view = list.get_views().getByTitle(viewTitle);
     ctx.load(view,'ViewQuery');
     ctx.executeQueryAsync(
         function() {
             var viewQry = "<View><Query>" + view.get_viewQuery() + "</Query> 
  </View>";
             getItems(listTitle,viewQry,success,error);
          },
          error);
   }

  function getItems(listTitle, queryText,success,error) {
     var ctx = new SP.ClientContext();
     var list = ctx.get_web().get_lists().getByTitle(listTitle);
     var query = new SP.CamlQuery();
     query.set_viewXml(queryText);
     var items = list.getItems(query);
     ctx.load(items);
     ctx.executeQueryAsync(
         function() {
             success(items);
         },
         error
    );
  }

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

i expect it save on the calendar event list but i got the error message "Sorry, something went wrong" and a correlation id "9b40ec9e-1004-8000-bbff-36490b07f284"我希望它保存在日历事件列表中,但我收到错误消息“抱歉,出了点问题”和相关 ID“9b40ec9e-1004-8000-bbff-36490b07f284”

you did not put a value for the option.您没有为该选项设置值。 So it is like an Option without an ID and just Text so need to replace this section所以它就像一个没有 ID 而只有 Text 的 Option 所以需要替换这个部分

  var textnode = document.createTextNode(item.get_item('Deliverable'));
                  node.appendChild(textnode);

with the following与以下

  var textnode = document.createTextNode(item.get_item('Deliverable'));
                  node.value = item.get_item('ID');
                  node.appendChild(textnode);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM