我正在编写一个代码,该代码将遍历sharepoint列表中的每个列表项并查找空字段。如果找到空字段,则通过电子邮件通知负责列表项的人员。
我在val = oListItem[field.Title];
行显示错误
属性或字段尚未初始化。尚未请求或请求尚未执行。可能需要明确要求。
在我看来,我已经在该行之前初始化了所有内容。
static void Main()
{
ClientContext context = new ClientContext("https://****");
context.Credentials = new NetworkCredential("****", "****");
List oList = context.Web.Lists.GetByTitle("TestBI");
FieldCollection fieldcol = oList.Fields;
context.Load(oList);
context.Load(fieldcol);
context.ExecuteQuery();
ListItem oListItem = oList.GetItemById(1);
object val = null;
for (int i = 1; i <= 4; i++)
{
oListItem = oList.GetItemById(i);
foreach (Field field in fieldcol)
{
val = oListItem[field.Title];
if(val == null)
{
//Send e-mail
}
}
}
context.ExecuteQuery();
}
答案 0 :(得分:13)
欢迎使用SharePoint CSOM地狱。
您确实加载了List和FieldCollection,但您还必须加载每个Field。实际上,您必须加载要从中获取属性的每个SharePoint对象。
for (int i = 1; i <= 4; i++)
{
oListItem = oList.GetItemById(i);
foreach (Field field in fieldcol)
{
context.Load(field);
context.ExecuteQuery();
val = oListItem[field.Title];
if(val == null)
{
//Send e-mail
}
}
}