SPFx: добавить новый элемент в существующую папку списка (используя pnp) - PullRequest
0 голосов
/ 19 февраля 2020

Кто-нибудь знает, как добавить новый элемент в папку списка в Sharepoint Framework?

Таким образом, я могу добавить элемент в список MyList:

let list = pnp.sp.web.lists.getByTitle("MyList");    

list.items.add({
      Title: "itemName"
      }).then(r => { 

      console.log(r);
})

Но мне нужно, чтобы он был создан внутри папки MyList\MyFolder.

I попытался получить папку следующим образом:

var folder= sp.web.lists.getByTitle("MyList").rootFolder.folders.getByName("MyFolder");

, но я не могу найти способ добавить элементы внутрь.

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Кажется, что эта операция не реализована с библиотекой sp-pnp- js.

Вы должны быть в состоянии сделать это, используя запрос на ручное извлечение, подобный этому:

const listTitle = "List Title";
const folderTitle = "Folder Title";
const webUrl = _spPageContextInfo.webAbsoluteUrl;
const url = webUrl + "/_vti_bin/ListData.svc/" + listTitle.replace(/\s/g, "");
fetch(url, {
    method: 'POST',
    headers: {
        "Accept": "application/json",
        "Content-Type": "application/json"
    },
    body: JSON.stringify({
        Title: "Item Name",
        Path: webUrl + "/Lists/" + listTitle + "/" + folderTitle
    }),
}).then(console.log);
0 голосов
/ 20 февраля 2020

Как писал Джексон, кажется, что невозможно добавить элемент в папку списка с помощью библиотеки sp-pnp-js.

Итак, выполнив некоторые поиски, я обнаружил, что можно использовать addValidateUpdateItemUsingPath для этой цели:

const _spPageContextInfo=this.context.pageContext.legacyPageContext;
const webUrl = _spPageContextInfo.webAbsoluteUrl;

const listPath=webUrl+"/Lists/MyListInternalName";
const folderName="MyFolderName";

sp.site.rootWeb.lists.getByTitle("MyList").addValidateUpdateItemUsingPath([
    { FieldName: 'Column1', FieldValue: 'Value1'}, 
    { FieldName: 'Column2', FieldValue: 'Value2'}]    
  ,`${listPath}/${folderName}`).then(console.log);

Затем мне потребовалось немного дополнительного времени, чтобы понять, как установить FieldValue для пользовательских полей при использовании addValidateUpdateItemUsingPath (в данном случае с использованием идентификатора пользователя -as обычный - для извлечения пользователя не работал).
Но я нашел этот путь:

{FieldName: 'ColumnUser', 
FieldValue: JSON.stringify([{"Key": "i:0#.f|membership|"+"MyUserEmail"}])}
...