c# - SharePoint ListItemCollection.GetById 返回空 ListItem?
问题描述
所以我试图从共享点服务器 ListItem 检索数据
唯一的问题是这部分在这里:
集合.GetById(itemId)
返回一个完全空的 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;
}
推荐阅读
- azure-devops - 在 VSTS 发布管道中发布 HTML 测试报告
- node.js - Braintree 服务器端 - 客户端令牌和验证付款
- android - 将复选框设置为禁用或可单击设置为 false 禁用动画
- python - 在 Python 中使用多处理时如何共享自定义变量?
- visual-studio-code - 如何在测试中选择 QuickPick 中的项目?
- python - 无法使用 django-allauth 将 django 应用程序部署到 heroku
- linux - 我的期望脚本如何从我的配置文件中设置参数
- tensorflow - TensorFlow 估计器多 GPU 预测
- python - 只能遍历给定目录的第一个子目录,但不是全部
- javascript - 具有多个功能的 foreach 异步