SharePoint ListItemCollection.GetById returns 空 ListItem?
SharePoint ListItemCollection.GetById returns empty ListItem?
所以我正在尝试从共享点服务器 ListItem 检索数据
唯一的问题是这部分在这里:
collection.GetById(itemId)
returns一个完全空的ListItem而不是id对应的ListItem
当我用调试器检查时,项目确实在集合中并且所有数据都在里面。
我该如何更正这个问题,或者我是否遗漏了一些重要信息?
public Dictionary<string, object> GetPendingEmployeeItem(int itemId)
{
var list = _app.Sharepoint.Web.Lists.GetByTitle("New Employee");
var query = new CamlQuery();
query.ViewXml = "<View></View>";
var collection = list.GetItems(query);
_app.Sharepoint.Load(collection, items => items.Include(
item => item.Id,
item => item.DisplayName,
item => item.FieldValuesAsText));
_app.Sharepoint.ExecuteQuery();
return ConvertToDictionary(collection.GetById(itemId));
}
private Dictionary<string, object> ConvertToDictionary(ListItem item)
{
var dic = new Dictionary<string, object>();
foreach (var pair in item.FieldValuesAsText.FieldValues)
{
dic.Add(pair.Key, pair.Value);
}
return dic;
}
所以我找到了解决方案。以前不知道为什么不行,不过我想只要现在能用就好了。
我没有使用给定的方法 GetById / GetItemById,而是使用 First 来绕过它们。
要么我遗漏了什么,要么这些方法被破坏了。
public Dictionary<string, object> GetPendingEmployeeItem(int itemId)
{
var list = _app.Sharepoint.Web.Lists.GetByTitle("New Employee");
var query = new CamlQuery();
query.ViewXml = "<View></View>";
var collection = list.GetItems(query);
_app.Sharepoint.Load(collection);
_app.Sharepoint.ExecuteQuery();
return collection.First(item => item.Id.Equals(itemId)).FieldValues;
}
所以我正在尝试从共享点服务器 ListItem 检索数据
唯一的问题是这部分在这里:
collection.GetById(itemId)
returns一个完全空的ListItem而不是id对应的ListItem
当我用调试器检查时,项目确实在集合中并且所有数据都在里面。
我该如何更正这个问题,或者我是否遗漏了一些重要信息?
public Dictionary<string, object> GetPendingEmployeeItem(int itemId)
{
var list = _app.Sharepoint.Web.Lists.GetByTitle("New Employee");
var query = new CamlQuery();
query.ViewXml = "<View></View>";
var collection = list.GetItems(query);
_app.Sharepoint.Load(collection, items => items.Include(
item => item.Id,
item => item.DisplayName,
item => item.FieldValuesAsText));
_app.Sharepoint.ExecuteQuery();
return ConvertToDictionary(collection.GetById(itemId));
}
private Dictionary<string, object> ConvertToDictionary(ListItem item)
{
var dic = new Dictionary<string, object>();
foreach (var pair in item.FieldValuesAsText.FieldValues)
{
dic.Add(pair.Key, pair.Value);
}
return dic;
}
所以我找到了解决方案。以前不知道为什么不行,不过我想只要现在能用就好了。
我没有使用给定的方法 GetById / GetItemById,而是使用 First 来绕过它们。 要么我遗漏了什么,要么这些方法被破坏了。
public Dictionary<string, object> GetPendingEmployeeItem(int itemId)
{
var list = _app.Sharepoint.Web.Lists.GetByTitle("New Employee");
var query = new CamlQuery();
query.ViewXml = "<View></View>";
var collection = list.GetItems(query);
_app.Sharepoint.Load(collection);
_app.Sharepoint.ExecuteQuery();
return collection.First(item => item.Id.Equals(itemId)).FieldValues;
}