从 Sharepoint 列表中获取所有项目,包括使用 CSOM 的查找值

     2023-03-27     265

关键词:

【中文标题】从 Sharepoint 列表中获取所有项目,包括使用 CSOM 的查找值【英文标题】:Get all items from Sharepoint list including lookup values using CSOM 【发布时间】:2020-11-07 12:41:51 【问题描述】:

我想从 Sharepoint 列表中检索所有项目,包括查找字段的 ID 和值。 查找列表与查询列表位于相同的站点/url。目前我收到“属性或字段尚未初始化”错误。

如何正确地将查找字段加载到客户端上下文中,以便可以访问该属性?

在搜索和尝试不同的事情但没有成功之后,例如使用 list.GetRelatedFields() 获取所有相关字段并通过迭代相关字段集合中的列表 ID 来加载所有列表中的所有字段,我需要帮助。

我再也看不到森林了。任何提示表示赞赏。提前致谢。

更新

发生了两件事。首先,我也忘记将列表对象加载到上下文中。其次,我尝试请求配置错误的属性/列。

Sharepoint Online 上的列表是从另一个 Sharepoint 站点复制的,其中包括自动复制用于查找的列表。

似乎此重复已损坏查找列。我必须手动删除查找列并将其读取到请求的列表中。

现在,它起作用了! :)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using SP = Microsoft.SharePoint.Client;

    namespace Theroka 

        class Sharepoint 

            private private SP.ClientContext context;

            // credential handling, authorization, context creation, etc. ....
            
            public void getItems() 
                SP.List list = this.context.Web.Lists.GetByTitle("NameOfList");
                this.context.Load(list); // UPDATE: I've forgot to load the list too
                this.context.Load(list.Fields, c => c.Where(e => e.Hidden != true));
                this.context.ExecuteQuery();

                ListItemCollectionPosition position = null;
                do 
                    CamlQuery query = CamlQuery.CreateAllItemsQuery(5000);
                    query.ListItemCollectionPosition = position;
                    SP.ListItemCollection items = list.GetItems(query);
                    this.context.Load(items);
                    this.context.ExecuteQuery();
                    position = items.ListItemCollectionPosition;
                    foreach(SP.ListItem item in items) 
                        // this works now
                        SP.FieldLookupValue lv = (item["LookupFieldName"] as SP.FieldLookupValue);
                        Console.WriteLine("0\t1\t2", item.Id, item["Title"], lv.LookupValue.ToString());
                    
                 while (position != null);
            

        
    

亲切的问候,

罗卡

【问题讨论】:

【参考方案1】:

您可以尝试将列表项的所有字段作为文本加载到上下文中并仅显示它们,我认为这是最简单的方法,但可能不是最有效的方法。在这种情况下,查找列也应该作为文本值(而不是 id)可见。

将字段值包含为文本 您需要将其与加载项一起加载到上下文中。因此,对于您的示例,它将类似于

this.context.Load(items, items => items.Include(item => item.FieldValuesAsText));

之后您应该能够获得查找列的值,例如:

item.FieldValuesAsText["LookupFieldName"]

希望对你有帮助

【讨论】:

嗨,亚当,感谢您的回答。对不起我迟到的反应。我不能早点回来。尝试了这个并得到了另一个错误。这导致了我的错误——我忘记将列表对象加载到上下文中——以及 Sharepoint 列表本身中的错误列。除了对共享点列表进行必要的更改(请参阅更新的帖子)之外,代码现在可以工作了。谢谢。

如何使用 SharePoint Webservice 从 SharePoint 列表中删除所有项目而不进行迭代

】如何使用SharePointWebservice从SharePoint列表中删除所有项目而不进行迭代【英文标题】:HowtoDeletealltheItemsfromSharePointListwithoutiterationusingSharePointWebservice【发布时间】:2011-11-2010:52:06【问题描述】:我想使用ListsWeb服务从SharePoint列表... 查看详情

powershell获取sharepoint库中所有文件夹的列表,包括子文件夹(代码片段)

查看详情

从 sharepoint 获取所有文档的列表

】从sharepoint获取所有文档的列表【英文标题】:Gettinglistofalldocumentsfromsharepoint【发布时间】:2021-10-3122:32:04【问题描述】:我正在尝试实现可以​​从共享点获取文档列表的功能。我已经从Azure目录实现中尝试了这个演示代码并... 查看详情

csharp使用客户端对象模型从sharepoint列表中删除所有项目(代码片段)

查看详情

根据搜索查询从多个提到的列表中获取项目计数

...022-01-1700:10:48【问题描述】:我有3个名为list1list2和list3的Sharepoint列表,所有列表中有2个公共字段。我想从所有这3个列表中获取itemscount/items&&用2columns过滤数据EX- 查看详情

powershell通过powershell计算sharepoint列表中所有项目的版本。(代码片段)

查看详情

powershellpoweshell脚本,用于获取sharepoint网站中的所有列表。(代码片段)

查看详情

powershellpowershell脚本,用于获取sharepoint站点中特定列表的所有详细信息(代码片段)

查看详情

删除所有列表项 Sharepoint 2013 REST

】删除所有列表项Sharepoint2013REST【英文标题】:DeleteAllListItemsSharepoint2013REST【发布时间】:2014-04-2600:27:59【问题描述】:我需要使用RESTAPI删除Sharepoint列表中的所有项目。我怎样才能做到这一点?我可以使用以下方法删除单个项... 查看详情

Sharepoint 的 CAML 查询中的日期时间比较

】Sharepoint的CAML查询中的日期时间比较【英文标题】:DatetimecomparisoninCAMLQueryforSharepoint【发布时间】:2011-06-0614:50:45【问题描述】:我正在尝试从共享点列表中获取一些项目,这取决于自定义列中的日期。我已经使用U2UCamlBuilder... 查看详情

如何从核心数据中的实体中获取所有项目的列表,每个项目只出现一次?

】如何从核心数据中的实体中获取所有项目的列表,每个项目只出现一次?【英文标题】:HowtogetListfromentityinCoreDatawithallitemsthereiseachitemappearsonlyonce?【发布时间】:2013-09-2807:11:08【问题描述】:在CoreData模型中,我有“客户”实... 查看详情

删除sharepoint列表中的所有项目

ThiswilldeleteallitemsinaSharePointlist.BetterthanloopingthroughaSPListItemCollectionanddoinga.delete();SPListlist=web.Lists[ListId];SPListItemCollectionsplic=list.Items;StringBuilderbatchString=newStringBuilder();batchString.Append("<?xmlversion="1.0"encoding=&... 查看详情

powershell此powershell脚本使用字段名称获取所有值是sharepoint列表中的字段(代码片段)

查看详情

从列表中获取唯一项目[重复]

】从列表中获取唯一项目[重复]【英文标题】:Gettinguniqueitemsfromalist[duplicate]【发布时间】:2010-11-2604:17:29【问题描述】:从列表中获取所有不同项目的最快/最有效的方法是什么?我有一个List&lt;string&gt;,其中可能有多个... 查看详情

SwiftUI:从列表中的项目获取切换状态

】SwiftUI:从列表中的项目获取切换状态【英文标题】:SwiftUI:GettogglestatefromitemsinsideaList【发布时间】:2020-04-0214:42:13【问题描述】:我正在构建一个应用程序,我在视图中生成一个动态列表,该列表中的项目有一个切换按钮。... 查看详情

如何使用 Rest 在 SharePoint 中获取多个模板类型列表

】如何使用Rest在SharePoint中获取多个模板类型列表【英文标题】:HowtogetmultipletemplatetypeslistinSharePointusingRest【发布时间】:2021-08-2515:08:47【问题描述】:我正在尝试列出所有自定义列表和事件列表。这是我在URL中的代码url:"http://e... 查看详情

如何在 SharePoint 之外获取/发布 SharePoint 列表/库数据?

】如何在SharePoint之外获取/发布SharePoint列表/库数据?【英文标题】:HowtoGET/POSTSharePointlist/librarydataoutsideofSharePoint?【发布时间】:2021-11-1204:24:14【问题描述】:我需要从SharePoint外部在SharePoint列表中发布数据。我创建了一个Angular... 查看详情

如何从列表视图中的项目单击中获取歌曲在android中

】如何从列表视图中的项目单击中获取歌曲在android中【英文标题】:Howtogetsongfromlistviewinitemclickinandroid【发布时间】:2017-05-1716:28:02【问题描述】:我制作了android应用程序,在其中我从移动存储读取所有音频歌曲并添加所有歌... 查看详情