by1455的自留地

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 

CAML(Collaborative Application Markup Language) 早在2001Sharepoint 2001 Team Service (WSS的第一个版本)就出现了。记得当时也算轰动一时,直到现在MOSS 2007还是依然健在,相比之下同时一起出来的PKM早已被OM取代,改的面目全非。当然现在开发MOSS2007.要么选择OM,要么选择web service。用到CAML的场景应该不多。

先来看看CAML的最简单的用法:

MOSS2007的基本配置如下:(全部是缺省值)
服务器名:devweb4
Site名:testcaml
List : mylist
View名:All Items

visual studio 生成一个console application. 源码如下:

 

Imports Microsoft.SharePoint

 

Module Caml

 

    Sub Main(ByVal args() As String)

        Dim ServerName As String = args(0)

        Dim SiteName As String = args(1)

        Dim listName As String = args(2)

        Dim viewName As String = args(3)

        Dim site As SPSite = New SPSite(ServerName)

        Dim web As SPWeb = site.OpenWeb(siteName)

 

        Dim myList As SPList = web.Lists(listName)

        Dim query As SPQuery = New SPQuery(myList.Views(viewName))

        System.Diagnostics.Debug.WriteLine(query.ViewXml)

        Console.WriteLine(query.ViewXml)

        Console.ReadLine()

 

    End Sub

 

End Module


四个参数分别是
服务器名:devweb4Site名:testcaml List :  mylist View名:All Items

 

运行命令:Caml “http://devweb4/” “testcaml” “mylist” “All Items”

 

得到以下结果 (一个XML

 

<Query>

       <OrderBy>

              <FieldRef Name="ID" />

       </OrderBy>

</Query>

<ViewFields>

       <FieldRef Name="Attachments" />

       <FieldRef Name="LinkTitle" />

</ViewFields>

<RowLimit>100</RowLimit>

</View>

 

如果为“All Items” (View)选择更多的field, 就会有更多<FieldRef Name="<field name>" />出现。

 

上面的xml构成了CAML检索的基础

 

下面是一个典型的检索

 

<Query>

<OrderBy>

<FieldRef Name=”Title” />

</OrderBy>

<Where>

<Lt>

<FieldRef Name=”StartDate” />

<Value Type=”DateTime”>2007-01-01T00:00:00Z</Value>

</Lt>

</Where>

</Query>

Title为序,检索所有的startdate小于2007/01/01的项目。

 

posted on 2007-06-26 07:43  by1455  阅读(819)  评论(0编辑  收藏  举报