这是Caml Querys的正确语法吗?

时间:2015-10-13 22:58:18

标签: sharepoint sharepoint-2010 caml

我有一个像这样的工作Caml查询:

<View><Query><Where><Eq><FieldRef Name=\'ptli_TravelersEmail\' /><Value Type=\'Text\'>' + payeename + '</Value></Eq></Where></Query></View>

...检索&#34;记录&#34;从Sharepoint列表中,其中的值是&#39; ptli_TravelersEmail&#39; field等于传入的arg&#34; payeename&#34;。

的值

要在查询中添加另一个子句,以检索&#34;记录&#34;前者适用的地方,也包括“ptli_preparer”中的价值所在。 field等于传入的arg&#34;用户名的值,&#34;我是否需要重复整个&#34; Where.Eq.FieldRef Name.Value..Value.Eq.Where&#34;部分,像这样:

<View><Query><Where><Eq><FieldRef Name=\'ptli_TravelersEmail\' /><Value Type=\'Text\'>' + payeename + '</Value></Eq></Where><Where><Eq><FieldRef Name=\'ptli_preparer\' /><Value Type=\'Text\'>' + username + '</Value></Eq></Where></Query></View>

...还是我的语法关闭?

我可以试试看,我知道,但是Sharepoint中的构建/运行/测试过程需要很长时间,而且我希望一些Caml专家能够立即知道。

1 个答案:

答案 0 :(得分:3)

以下是CAML query的一般格式:

<View>
    <Query>
        <Where>
            <Eq>
                <FieldRef Name="Internal_Name_of_field" />
                <Value Type="Text">The value to filter against</Value>
            </Eq>
        </Where>
    </Query>
</View>

<Eq>表示&#34;等于。&#34;您还可以使用<Neq>(不等于),<Lt>(小于),<Leq>(小于或等于),<Gt>(大于),{等比较{1}}(大于或等于),<Geq><Contains><IsNull>

如果您希望CAML查询具有多个条件,则可以将其中两个组合在一组<IsNotNull>标记(documented here)中。

<And>

您可以在其他<Where> <And> <Eq> <FieldRef Name="Internal_Name_of_field1" /> <Value Type="Text">The value to filter against</Value> </Eq> <Eq> <FieldRef Name="Internal_Name_of_field2" /> <Value Type="Text">The value to filter against</Value> </Eq> </And> </Where> <And>标记中嵌套<And>标记,以构建任意复杂的查询。

<Or>

<Where> <And> <Eq> <FieldRef Name="Internal_Name_of_field1" /> <Value Type="Text">The value to filter against</Value> </Eq> <And> <Eq> <FieldRef Name="Internal_Name_of_field2" /> <Value Type="Text">The value to filter against</Value> </Eq> <Eq> <FieldRef Name="Internal_Name_of_field3" /> <Value Type="Text">The value to filter against</Value> </Eq> </And> </And> </Where> 元素中使用的确切语法可能会根据要比较的字段类型而有所不同。 <Value>适用于单行文本字段,但查找字段,日期字段以及人员或组字段具有不同的语法。

要获得更高级的CAML查询,请注意Type="Text"OrderBy元素的展示位置:

RowLimit