我的SharePoint列表中有一个人员选择器列。
我需要从此列中获取所有值(名称)。我正在使用Java脚本代码从SharePoint列表中获取数据。
我的代码如下:
此处“User”是列表中列的名称。
var enumerator = listItem.getEnumerator();
while (enumerator.moveNext()) {
var _User = "";
if (colListItem.get_item(User) !== 'undefined' && colListItem.get_item(User) !== null) {
//Check if people picker contains more than one value
if (colListItem.get_item(User).length > 0) {
//Check if people picker contains only one value
if (colListItem.get_item(User).length == 1) {
_User = colListItem.get_item(User)[0].$2e_1;
}
//Check if people picker contains more than one value
if (colListItem.get_item(User).length > 1) {
for (var i = 0; i < colListItem.get_item(User).length; i++)
{
//Append all User names with a semi colon separator
_User = _User + colListItem.get_item(User)[i].get_lookupValue() + ";";
}
_User.trim;
}
}
}
}
}
我知道我需要使用get_lookupValue。
但是如果人员选择器列中只有一个值,我会将其作为colListItem.get_item(User)[0].$2e_1;
我发现我需要使用开发人员工具$2e_1
。
这是正确的方法吗?
还有其他更好的方法吗?
请建议一些文章,信息链接,因为我对sharepoint和客户端对象模型都很新。
提前谢谢。
答案 0 :(得分:0)
function getListData(ListId)
{
$().SPServices(
{
operation: "GetListItems",
async: false,
listName: "NodueFormList",
CAMLQuery: "<Query><Where><Eq><FieldRef Name='ID'/><Value Type='Text'>" + ListId + "</Value></Eq></Where></Query>",
completefunc: function (xData, Status)
{
var SeparationCount = $(xData.responseXML).SPFilterNode("rs:data").attr("ItemCount");
if (SeparationCount > 0)
{
$(xData.responseXML).SPFilterNode("z:row").each(function () {
if ($(this).attr("ows_Admin") != undefined) {
AdminId = $(this).attr("ows_Admin").split(';')[0];
}
if ($(this).attr("ows_HR") != undefined) {
hrId = $(this).attr("ows_HR").split(';')[0];
}
});
}
}
});
}
function UpdateData(ListId)
{
var adminaddtional = document.getElementById("txtareaAdition").value;
siteUrl = "/sites/Empower/";
var listName = "NodueFormList";
var itemType = GetItemTypeFoListName(listName);
var item =
{
__metadata: { "type": itemType },
};
$.extend(item, { PendingwithId: hrId });
//Multiple people picker update IsVisible is column name and Id add
$.extend(item, { IsVisibleId:{'results':[AdminId,hrId]}}**);
$.extend(item, { Flag: "0" });
$.extend(item, { Additonalnotetoadmin: adminaddtional });
$.extend(item, { Role: "HR" });
$.extend(item, { IsActive: "Yes" });
$.ajax(
{
url: siteUrl + "_api/Web/Lists/GetByTitle('" + listName + "')/GetItemById('" + ListId + "')",
type: "POST",
async: false,
contentType: "application/json;odata=verbose",
data: JSON.stringify(item),
headers: {
"accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose",
"X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
"IF-MATCH": "*",
"X-Http-Method": "MERGE"
},`enter code here`
success: function (data)
{
alert("Updated Successfully");
},
error: function (error)
{
console.log(JSON.stringify(error));
}
});
}
答案 1 :(得分:-2)
这里解释了一个明确的解决方案 -
http://gocodin.blogspot.in/2017/04/how-to-get-lookup-valueusername-from.html
我获得价值的方式_User = colListItem.get_item(User)[0].$2e_1;
是错的。
可以使用get_lookupvalue
检索用户。
希望这有助于所有新手分享并面临类似问题。
谢谢!