如何在 CSOM 请求中包含项目的 FieldValues

Posted

技术标签:

【中文标题】如何在 CSOM 请求中包含项目的 FieldValues【英文标题】:How to include Project's FieldValues in CSOM request 【发布时间】:2015-07-03 05:38:47 【问题描述】:

我正在尝试使用客户端对象模型 (CSOM) 从 SharePoint 中提取所有项目信息。以下是我获取项目信息的方式:

projectContext.Load(projectContext.Projects,
    c =>
        c.Where(p => p.Id == new Guid(id))
            .IncludeWithDefaultProperties(f => f.Name, f => f.Owner.Id, f => f.CreatedDate,
                f => f.StartDate, f => f.FinishDate, f => f.PercentComplete, f => f.Description));

projectContext.Load(projectContext.LookupTables, c => c.Include(f => f.Id, f => f.Entries));
projectContext.Load(projectContext.Web.SiteUsers);
projectContext.ExecuteQuery();

但是,我还需要从这些项目中检索 FieldValues 属性,但我不知道如何将它包含在同一个查询中。从上面的代码中检索项目后,我发现了如何在项目级别执行此操作,如下所示:

var pubProject = project.IncludeCustomFields;
projectContext.Load(pubProject);
projectContext.Load(pubProject.CustomFields);

projectContext.ExecuteQuery();

var fieldValues = pubProject.FieldValues;

现在 pubProject 将包含 FieldValues 信息,但对所有项目使用该方法变得太慢(调用 SharePoint 需要 1 - 4 秒),因为我需要为每个项目和最佳实践提出额外请求CSOM 是要尽量少打电话。

如果我在 include 字段中包含 FieldValues,如下所示:

projectContext.Load(projectContext.Projects,
    c =>
        c.Where(p => p.Id == new Guid(id))
            .IncludeWithDefaultProperties(f => f.Name, f => f.Owner.Id, f => f.CreatedDate,
                f => f.StartDate, f => f.FinishDate, f => f.PercentComplete, f => f.Description, f => f.FieldValues));

我收到以下错误:

不支持查询表达式“f.FieldValues”。

【问题讨论】:

我在这里面临同样的问题。有任何关于该问题的更新吗? @HellKeeper 没有这方面的更新。我还没有找到解决方案。 【参考方案1】:

我认为您需要将f => f.CustomFields 放入您的.IncludeWithDefaultProperties 语句而不是f.FieldValues -- 加载CustomFields 应该会导致FieldValues 被填充

【讨论】:

以上是关于如何在 CSOM 请求中包含项目的 FieldValues的主要内容,如果未能解决你的问题,请参考以下文章

SharePoint CSOM 处理人员和组字段

AWS-amplify 在请求中包含 cognito Authorization 标头

如何在 GraphQL 中包含突变请求元数据?

如何在 Dropzone 上传请求的标头中包含 CSRF 令牌?

如何在 PHP 的 cURL POST HTTP 请求中包含授权标头?

刷新窗口后,如何指示浏览器在请求中包含 cookie?