如何通过单击列表中的超链接获取Sharepoint列表的行ID?

时间:2017-10-31 15:41:33

标签: javascript jquery sharepoint

我有一个共享点列表,用户可以在其中创建新项目。有时用户会创建非常相似的项目,因此他们要求我创建一个选项,将现有项目的数据复制到新项目表单并自动填充(独特/自动生成的字段除外)。因此,他们必须修改几个输入才能创建新项目。

我添加了一个新列并使用指向新项目表单的超链接自动填充(text:" copy"),但我不知道如何获取rowindexid或任何唯一字段值点击的超链接的行并将其带到下一页。如果我能做到这一点,我可以轻松搜索列表并填写新表格。可悲的是,我是JavaScript的新手,所以即使经过数小时的研究,我也不确定如何处理这个问题,所以请帮我一把。非常感谢你的任何想法!

1 个答案:

答案 0 :(得分:1)

由于原始问题中未提及,我假设您使用的是SharePoint 2013+。

首先,我会在字段列表中添加一个查阅列。这将允许他们选择他们想要复制的项目。您需要获取此元素的ID以及页面中的所有其他输入元素。对于我的演示,我将它们放入一个对象中。您可以使用开发人员工具(ie中的F12或Chrome中的Ctrl + Shift + i)。

var idsAndNames = {
"fieldName":"id of field",
....
}

接下来创建一个函数来读取该项目中的数据并将其添加到表单中。对于下面的代码,我使用的是Rest API。您还可以使用SharePoint的CSOM。

function addData(e) {
  var opt = e.target.options[e.target.selectedIndex];
  var idOfItem = opt.value;
   $.ajax({
       url: path/to/list/_api/lists/getByTitle('<name of list>')/items(idOfItem),
       type: "GET",
       headers: { "Accept": "application/json;odata=verbose" },
       success: function (data, textStatus, xhr) {
           for (var key in idsAndNames){
             $(idsAndNames[key]).html(data.d[key]);
           }
       },
       error: function (data, textStatus, xhr) {
           alert('failed to get data');
       }
   });
}

最后添加一个事件监听器,以便在用户选择其他项目时进行更改。

$(idOfSelect).on('change', addData);

document.getElementById(idOfSelect).addEventListener('change', addData)

或使用ES6

document.querySelector(#idOfSelect).addEventListener('change',()=>addData(data));