Как я могу получить вложения элементов списка SharePoint, используя spfx? - PullRequest
0 голосов
/ 24 января 2020

Мне удалось выяснить, как отправить несколько вложений в элемент списка sharepoint. Теперь мне нужно извлечь элемент и отобразить эти элементы в той же форме, в которой они были отправлены.

Вот код отправки:

private _onSubmit() {
    this.setState({
      FormStatus: 'Submitted',
      SubmittedLblVis: true,

    }, () => {

      pnp.sp.web.lists.getByTitle("My List").items.add({

        State: this.state.State,
        State1: this.state.State1,

      }).then((iar: ItemAddResult) => {
        var attachments: AttachmentFileInfo[] = [];

        attachments.push({
          name: this.state.FileUpload[0].name,
          content: this.state.FileUpload[0]

        });

        attachments.push({
          name: this.state.FileUpload2[0].name,
          content: this.state.FileUpload2[0]
        });

        attachments.push({
          name: this.state.FileUpload3[0].name,
          content: this.state.FileUpload3[0]
        });

    iar.item.attachmentFiles.addMultiple(attachments);

Это прекрасно работает.

I есть кнопка формы, которая позволяет пользователю прочитать элемент и заполнить все поля в форме. Это отлично работает. Но это не работает для вложений. Во-первых, я не знаю, как называется столбец Attachments!

Вот функция поиска:

private _editItem = (ev: React.MouseEvent<HTMLElement>) => {
    const sid = Number(ev.currentTarget.id);
    let _item = this.state.Items.filter((item) => { return item.Id === sid; });
    if (_item && _item.length > 0) {
      this._getListItems();
      this.setState({
        State etc...with a few examples

        FormStatus: _item[0].FormStatus, 

        showModal: true

        //The below callback function 
      }, () => {

        if (_item[0].PanelMember) {
          this.PanelMemberGetPeoplePicker(Number(_item[0].PanelMemberId));
        }

      });
    }
  }

И функция _getListItems () в приведенном выше примере:

 public _getListItems() {
    sp.web.lists.getByTitle("MyList").items.get().then((items: any[]) => {
      let returnedItems: MyDataModel[] = items.map((item) => { return new MyDataModel(item); });

      this.setState({ Items: returnedItems });
    });
  }

Я понимаю, что мне придется обновить интерфейс MyDataModel, какой бы ни был столбец вложений, но что такое столбец вложений? И как бы я реализовал это в вышеупомянутом, чтобы получить все 3 приложенных документа?

1 Ответ

1 голос
/ 27 января 2020

Сначала получите предмет, затем получите файлы прикрепления предмета.

let item=sp.web.lists.getByTitle("TestList").items.getById(13);
    item.attachmentFiles.get().then((files)=>{
      console.log(files);
    })

enter image description here

...