2017-04-15 30 views
1

我正在爲使用office-ui-fabric-react庫構建的SharePoint創建自定義編輯表單。我最近在編輯表單中添加了人員選擇器,並意識到查找列不會在正常的「獲取」REST調用上返回。看起來你必須爲每個人員選擇器進行選擇和擴展。與人員選擇器自定義編輯表格

我以前設置的獲取請求旨在通過自動調用列表名稱和當前項目標識儘可能重複使用。在這一點上,我覺得我正在做一些艱難的工作,並希望看看是否有其他人有過使用React SharePoint編輯表單的人員選擇列的經驗。

我目前設置列值的工作流程如下。

  1. 所有當前列的GET請求的形式編輯踢componentDidMount值
  2. 裝載的值設置爲國家
  3. 編輯表單上的子組件發送this.state.loadedValues下來的道具價值
  4. 在子組件,該值設置爲this.props.value

目前,它好像如果我想填充我反應的組分與電流值,我將不得不杉st做我的普通「獲得」REST調用通常的列,然後單獨的REST調用,併爲我添加到表單中的每個人員選擇器進行選擇和展開。有沒有更好的方法來做到這一點?

這裏是通用的GET請求,我有:

let req = new XMLHttpRequest; 
     return new Promise((resolve, reject) => { 
      req.open('GET', `${_spPageContextInfo.webAbsoluteUrl}/_api/Web/Lists/GetByTitle('${LIST_NAME}')/Items(${ITEM_ID})`, true); 
      req.setRequestHeader('Content-Type', 'application/json;odata=verbose'); 
      req.setRequestHeader('Accept', 'application/json;odata=verbose'); 

      req.onload = async() => { 
       // alert(req.status); 
       if (req.status === 200) { 
        let response = JSON.parse(req.response); 
        resolve(response.d); 
       } else { 
        reject(Error(req.statusText)); 
       } 
      }; 
      req.onerror =() => { 
       console.log(`Error: ${req.status}`); 
       reject(Error('Network Error')); 
      }; 
      req.send(null); 
     }); 

回答

0

我做了這樣的事情,我用一個單一的REST調用來獲取所有信息,擴展列包括在內。您只需要擴展查找,其他列可以無縫工作。

類似於"Id, Title, PeopleField1/Id, PeopleField1/Title, PeopleField1/EMail, FieldX, FieldY"的列,而只有"PeopleField1"用於展開。