【问题标题】:CAML query for boolean column is not working布尔列的 CAML 查询不起作用
【发布时间】:2012-06-27 05:11:16
【问题描述】:

您好,我有一个要针对我的桌面应用程序查询的 SharePoint 列表,我只想检索活动成员,但是当我查询时,我只得到了不活动的用户。我的 CAML 查询有什么问题?

camlQuery.ViewXml = "<<"View">><Query><Where><Eq><FieldRef Name='Active'/><Value Type='Boolean'> " + true + "</Value></Eq></Where></Query></View>"";

我也尝试了以下方法

camlQuery.ViewXml = "<View><Query><Where><Eq><FieldRef Name='Active'/><Value Type='Boolean'> true</Value></Eq></Where></Query></View>";

camlQuery.ViewXml = "<Query><Where><Eq><FieldRef Name='Active'/><Value Type='Boolean'> true</Value></Eq></Where></Query>";

请帮忙,因为我是 CAML 的新手。

【问题讨论】:

  • 尝试在google中搜索,sharepoint中有很多caml查询示例。你写的东西看起来不像 caml 查询
  • 出于某种我不知道的原因,我确定sharepoint有一个错误,因为我有两个布尔列以相同的方式配置(列“返回”和列“检查”)如果我使用 CAML 代码通过“Returned”列查询 spList,它可以工作,但是当我只是将此 CAML 代码更改为通过另一列“Checked”查询时,只需将属性名称更改为“Checked”列,在我们只设置内部字段名称的地方,代码不会给我带来任何 spListitem 结果,但它应该返回一些项目。非常奇怪的列“A”(返回)

标签: c# sharepoint caml


【解决方案1】:

省去一些麻烦,并使用工具来帮助构建 CAML 查询,例如 U2U's Caml Query Builder.

你需要在查询中使用1和0(不是真假),所以

<Query><Where>
   <Eq><FieldRef Name="Active" /><Value Type="Boolean">1</Value></Eq>
</Where></Query>

【讨论】:

  • 奇怪的是,对于某些布尔列,您必须将值设置为“true”而不是“1”——我还没有弄清楚为什么
  • 如果你保持 Type="Integer",你将永远不得不使用 1 和 0
【解决方案2】:

这对我有用

camlQuery.ViewXml = "<View>" + "<Query>" + "<Where>" + "<Eq>" +
"<FieldRef Name='Active'/>" + " <Value Type='Boolean'>" + "1" + "</Value>" +
"</Eq>" + "</Where>" + "</Query>" + "</View>";

【讨论】:

  • 为什么要这样连接查询字符串?
  • @Patric 我被教导要这样做。
【解决方案3】:

使用值类型Bool,它适用于“true”、“True”或“TRUE”

【讨论】:

  • 我不认为这种类型存在,你能发布链接到显示它的文档吗?
  • 只要通过 Caml Query Builder 使用这个方法就可以了!
  • 嘿,它确实有效。看起来这是一个更好的选择,因为它需要 1、true、True 和 TRUE,而布尔值只有 1。在 SP Online 上测试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 2012-11-13
相关资源
最近更新 更多