从 CSOM 中的 SP.User 获取 displayName 或 loginName
Getting the displayName or loginName from SP.User in CSOM
我正在尝试获取 SP2010 中用户的显示名称或登录名(如果不可用),同时我正在从文档库中查询文件列表。
(我知道此功能目前 return 什么都没有。)
getEvidenceDocuments = function (relativePath) {
var clientContext = new SP.ClientContext("/documents");
var oList = clientContext.get_web().get_lists().getByTitle('Documents');
var query = SP.CamlQuery.createAllItemsQuery();
query.set_folderServerRelativeUrl(relativePath);
var allItems = oList.getItems(query);
clientContext.load(allItems, 'Include(Title, ContentType, File, Author, Editor)');
clientContext.executeQueryAsync(Function.createDelegate(this, function () {
var ListEnumerator = allItems.getEnumerator();
var fileCollection = [];
while (ListEnumerator.moveNext()) {
var currentItem = ListEnumerator.get_current();
var _contentType = currentItem.get_contentType();
if (_contentType.get_name() !== "Folder") {
var File = currentItem.get_file();
if (File !== null) {
var obj = {
title: File.get_title(),
name: File.get_name(),
author: clientContext.load(File.get_author(), "Title"),
modifiedBy: File.get_modifiedBy(),
modified: File.get_timeLastModified()
};
fileCollection.push(obj);
}
}
}
console.log(fileCollection);
}), Function.createDelegate(this, function () { console.log("ohoh"); }));
};
关键部分本质上是这样的:
var obj = {
title: File.get_title(),
name: File.get_name(),
author: clientContext.load(File.get_author(), "Title"),
modifiedBy: File.get_modifiedBy(),
modified: File.get_timeLastModified()
};
File.get_modifiedBy()
return 一个 SP.User 对象,而 clientContext.load(File.get_author(), "Title")
return 未定义。
由于我不知道执行此操作的正确方法,因此我围绕此页面构建了我的方法:https://social.technet.microsoft.com/wiki/contents/articles/22156.sharepoint-2010-a-complete-list-of-spfile-operations-using-ecma-script.aspx
将 author 和 modifiedBy 解析为其各自的 SP.User 属性的正确方法是什么。
ListItem 上提供了当前的作者和编辑,而不是该列表项的 SPFile 对象。使用 SPListItem.get_Item("propertyName")
后跟 get_lookupValue()
就可以了。
以下代码片段检索所有必填字段和 returns 延迟对象,以便可以链接调用:
getEvidenceDocuments = function (relativePath) {
var deferred = $.Deferred();
var clientContext = new SP.ClientContext("/documents");
var oList = clientContext.get_web().get_lists().getByTitle('Documents');
var query = SP.CamlQuery.createAllItemsQuery();
query.set_folderServerRelativeUrl(relativePath);
var allItems = oList.getItems(query);
clientContext.load(allItems, 'Include(Id, Title, ContentType, File, Author, Editor)');
clientContext.executeQueryAsync(Function.createDelegate(this, function () {
var ListEnumerator = allItems.getEnumerator();
var fileCollection = [];
while (ListEnumerator.moveNext()) {
var currentItem = ListEnumerator.get_current();
var _contentType = currentItem.get_contentType();
if (_contentType.get_name() !== "Folder") {
var File = currentItem.get_file();
if (File !== null) {
var obj = {
id: currentItem.get_id(),
title: File.get_title(),
name: File.get_name(),
createdBy: currentItem.get_item("Author").get_lookupValue(),
created: File.get_timeCreated(),
// author: clientContext.load(File.get_author(), "Title"),
modifiedBy: currentItem.get_item("Editor").get_lookupValue(),
modified: File.get_timeLastModified()
};
fileCollection.push(obj);
}
}
}
deferred.resolve(fileCollection);
}), Function.createDelegate(this, function () {deferred.reject(); }));
return deferred.promise();
};
我正在尝试获取 SP2010 中用户的显示名称或登录名(如果不可用),同时我正在从文档库中查询文件列表。 (我知道此功能目前 return 什么都没有。)
getEvidenceDocuments = function (relativePath) {
var clientContext = new SP.ClientContext("/documents");
var oList = clientContext.get_web().get_lists().getByTitle('Documents');
var query = SP.CamlQuery.createAllItemsQuery();
query.set_folderServerRelativeUrl(relativePath);
var allItems = oList.getItems(query);
clientContext.load(allItems, 'Include(Title, ContentType, File, Author, Editor)');
clientContext.executeQueryAsync(Function.createDelegate(this, function () {
var ListEnumerator = allItems.getEnumerator();
var fileCollection = [];
while (ListEnumerator.moveNext()) {
var currentItem = ListEnumerator.get_current();
var _contentType = currentItem.get_contentType();
if (_contentType.get_name() !== "Folder") {
var File = currentItem.get_file();
if (File !== null) {
var obj = {
title: File.get_title(),
name: File.get_name(),
author: clientContext.load(File.get_author(), "Title"),
modifiedBy: File.get_modifiedBy(),
modified: File.get_timeLastModified()
};
fileCollection.push(obj);
}
}
}
console.log(fileCollection);
}), Function.createDelegate(this, function () { console.log("ohoh"); }));
};
关键部分本质上是这样的:
var obj = {
title: File.get_title(),
name: File.get_name(),
author: clientContext.load(File.get_author(), "Title"),
modifiedBy: File.get_modifiedBy(),
modified: File.get_timeLastModified()
};
File.get_modifiedBy()
return 一个 SP.User 对象,而 clientContext.load(File.get_author(), "Title")
return 未定义。
由于我不知道执行此操作的正确方法,因此我围绕此页面构建了我的方法:https://social.technet.microsoft.com/wiki/contents/articles/22156.sharepoint-2010-a-complete-list-of-spfile-operations-using-ecma-script.aspx
将 author 和 modifiedBy 解析为其各自的 SP.User 属性的正确方法是什么。
ListItem 上提供了当前的作者和编辑,而不是该列表项的 SPFile 对象。使用 SPListItem.get_Item("propertyName")
后跟 get_lookupValue()
就可以了。
以下代码片段检索所有必填字段和 returns 延迟对象,以便可以链接调用:
getEvidenceDocuments = function (relativePath) {
var deferred = $.Deferred();
var clientContext = new SP.ClientContext("/documents");
var oList = clientContext.get_web().get_lists().getByTitle('Documents');
var query = SP.CamlQuery.createAllItemsQuery();
query.set_folderServerRelativeUrl(relativePath);
var allItems = oList.getItems(query);
clientContext.load(allItems, 'Include(Id, Title, ContentType, File, Author, Editor)');
clientContext.executeQueryAsync(Function.createDelegate(this, function () {
var ListEnumerator = allItems.getEnumerator();
var fileCollection = [];
while (ListEnumerator.moveNext()) {
var currentItem = ListEnumerator.get_current();
var _contentType = currentItem.get_contentType();
if (_contentType.get_name() !== "Folder") {
var File = currentItem.get_file();
if (File !== null) {
var obj = {
id: currentItem.get_id(),
title: File.get_title(),
name: File.get_name(),
createdBy: currentItem.get_item("Author").get_lookupValue(),
created: File.get_timeCreated(),
// author: clientContext.load(File.get_author(), "Title"),
modifiedBy: currentItem.get_item("Editor").get_lookupValue(),
modified: File.get_timeLastModified()
};
fileCollection.push(obj);
}
}
}
deferred.resolve(fileCollection);
}), Function.createDelegate(this, function () {deferred.reject(); }));
return deferred.promise();
};