基于多选字段中扩展列的 REST 查询 (Listdata.svc)

REST Query based on Expanded columns in multi choice fields (Listdata.svc)

我有一个 SP2010 客户端应用程序进行 REST 调用。我有一个很大的列表,我想使用 none 的值或许多名为 'displays' 的选择字段来进行过滤查询。我无权在此代码上添加服务器端代码。

当我 'expand' 查询时,我可以像这样访问选择的值

myDataVar.d.results[0].Displays.results[0].Value

因为将 1000 行拖到客户端显示 20 是残酷且不寻常的网络惩罚我需要在 .Displays.results[0].Value 上过滤 d.results

我试过这个:

[site]/_vti_bin/Listdata.svc/MasterDataList?$filter=Displays/Value eq 'Wide'

我收到错误消息

"No property 'Value' exists in type 'System.Collections.Generic.IEnumerable`1[[Microsoft.SharePoint.Linq.DataServiceEntity, Microsoft.SharePoint.Linq, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c]]' at position 9."

根据 another thread 我试过了

/_vti_bin/Listdata.svc/MasterDataList?$filter=DisplaysValue eq 'Wide'&$expand=Displays

错误:

在位置 0 的类型 'Microsoft.SharePoint.Linq.DataServiceEntity' 中不存在 属性 'DisplaysValue'。

测试没有 'Value' 后缀的 'Displays' 错误是:

运算符 'eq' 在位置 9 与操作数类型 'System.Collections.Generic.IEnumerable`1[[Microsoft.SharePoint.Linq.DataServiceEntity, Microsoft.SharePoint.Linq, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c]]' 和 'System.String' 不兼容。


我再次陷入 2010 年,在此先感谢。

您尝试的方法仅适用于非多select 的选择列。不幸的是,REST 接口不支持多 select 选择列。 SharePoint 2013 显然也是如此。

FWIW,当我尝试从 SharePoint 中的 Angular JS 应用程序执行相同的操作时,我 运行 遇到了同样的问题。我最终创建了自己的多值选择字段实现,然后将结果数据以 JSON 格式存储在 SharePoint 的多行文本列中。这让我可以毫无问题地使用 REST 查询该字段。