2

我遇到了一个问题,我没有找到记录的解决方案,但无意中自己找到了解决方案。所以我想在这里为可能遇到同样问题的其他人记录这一点。

我在 SPServices 中使用 CAML 查询来检索列表项,然后像往常一样引用“ows_{fieldname}”来检索每个列表项的字段值。所有项目的字段值都报告为“未定义”。我五重检查了我指定的字段的正确名称,并且我的查询构造正确。

我最终发现我试图引用的字段没有显示在列表的默认视图中。一旦我更改列表属性以在默认视图中包含字段,我的 javascript 中就会返回正确的字段值。

我不知道 Sharepoint 的基础有多少工作,但我对我的发现感到非常惊讶,因为这意味着 SPServices GetListItems 方法从列表的默认视图中获取其数据,而不是从实际的底层列表中获取数据。我意识到我的这种解释可能是错误的,但我想其他人可能会遇到同样的问题。

4

2 回答 2

4

默认的,虽然不可靠,GetListItems 的工作方式是,如果您没有在输入中指定 ViewFields ,它假定返回默认列表视图上显示的所有字段。这是不可靠的。虽然你让它工作了 - 现在 - 稍后有人可能会出现并更改默认视图,从而破坏你的甜蜜定制。真可惜。:) 我建议始终在 GetListItems 方法中列出您感兴趣的 ViewFields。这可确保您在设置它们时获得它们。这是正确的。您仍然可以获得未定义字段的行。这主要发生在未在行上设置的查找类型的字段上。

希望这可以帮助您了解正在发生的事情。多年来,我围绕 SPServices 创建了自己的包装器,以确保我获得对所有请求字段的引用,即使它们不在 Sharepoint 的响应中。

于 2014-09-10T23:57:39.547 回答
0

使用 SPServices 的 GetListItems 方法时,请确保您从列表中引用的任何字段都包含在列表的默认视图中,否则将返回未定义的值。

于 2014-09-10T21:18:29.410 回答