CAML点滴(转)

 

CAML点滴()

目标访问群体

由我签出

<Where><Eq><FieldRef Name="CheckoutUser" LookupId="TRUE"/><Value Type="int"><UserID/></Value></Eq></Where>

此网站及子网站中由我签出的所有文档和页面

上次由我修改

<Where><Eq><FieldRef Name="Editor" LookupId="TRUE"/><Value Type="int"><UserID/></Value></Eq></Where>

我上次在此网站及子网站中修改的所有文档和页面

等待审批

<Where><Eq><FieldRef ID="{fdc3b2ed-5bf2-4835-a4bc-b885f3396a61}"></FieldRef><Value Type="Number">2</Value></Eq></Where>

此网站及子网站中由我提交并等待审批的所有文档和页面

我的任务

<Where><Or><Eq><FieldRef Name="AssignedTo" LookupId="TRUE"/><Value Type="int"><UserID /></Value></Eq><Membership Type="CurrentUserGroups"><FieldRef Name="AssignedTo"/></Membership></Or></Where><OrderBy><FieldRef Name="DueDate"/></OrderBy>

此网站及子网站中分配给我的所有任务

所有草稿文档

<Where><Eq><FieldRef ID="{fdc3b2ed-5bf2-4835-a4bc-b885f3396a61}"></FieldRef><Value Type="Number">3</Value></Eq></Where>

此网站及子网站中尚未发布的所有文档和页面

在接下来的七天内生效

<Where><And><Leq><FieldRef ID="{51d39414-03dc-4bd0-b777-d3e20cb350f7}"></FieldRef><Value Type="DateTime">[Today + 7]</Value></Leq><Geq><FieldRef ID="{51d39414-03dc-4bd0-b777-d3e20cb350f7}"/><Value Type="DateTime"><Today /></Value></Geq></And></Where>

在接下来七天内,此网站及子网站中将发布的所有读者可见的文档和页面

在接下来的七天内到期

<Where><And><Leq><FieldRef ID="{a990e64f-faa3-49c1-aafa-885fda79de62}"></FieldRef><Value Type="DateTime">[Today + 7]</Value></Leq><Geq><FieldRef ID="{a990e64f-faa3-49c1-aafa-885fda79de62}"/><Value Type="DateTime"><Today /></Value></Geq></And></Where>

在接下来七天内,此网站及子网站中仅授权用户可见的所有文档和页面

CAML中尽量使用InternalName

CAML代码中,[本人] 建议用<Value Type="Integer"><UserID Type="Integer" /></Value>;不推荐用<Value Type="int"><UserID /></Value>

PS:CAML
代码:
[
今日]+7 建议用<Value Type="DateTime"><Today OffsetDays="7" /></Value>;不推荐用<Value Type="DateTime">[Today + 7]</Value>[今日]-7就是<Value Type="DateTime"><Today OffsetDays="-7" /></Value>
Membership是这样的,CurrentUserGroups是一个集合,<FieldRef Name="项目人员" />也是一个集合。Membership的作用是去比较这两个集合里的每一项是否有相同,如果有相同的话,返回真

例如:某个文档需要一个组的人审批,当前登陆用户属于这个组,这时候使用Membership就可以找出自己需要审批的task了。


1. SharepointList中允许创建DocumentFolder两种类型的数据,在查询时如何查出非Folder类型的数据?
CotentType = "Folder"

    当服务器上安装有WSS的多语言包时,根据不同的语言ContentType的值也会有不同的写法,可以借助CAML工具或者在WSS查询返回的报文中查看一下,确认ContentType的具体类型名称。

3. Lists.GetListItems()方法中的参数。

   
对于该方法中参数的详解,读者可以参考MSDN

http://msdn.microsoft.com/zh-cn/library/websvclists.lists.getlistitems.aspx

   
这里对参数的几点用法做一些说明:

listName

要查询的List的名称,也可以为ListGUID,不能为空。

viewName

一般都为空。

query

标准CAML查询语句,可以为空,<Query></Query>

viewFields

要查询的字段,可以为空,<ViewFields></ViewFields>

rowLimit

返回的记录条数,默认为100,如果不需要限制,将值设为0

queryOptions

查询选项设置,所涉及到的选项比较多,可以参考MSDN
http://msdn.microsoft.com/zh-cn/library/websvclists.lists.getlistitems.aspx
如果要查询ListFolder下的文档,则必须添加递归选项。
<QueryOptions>
  <ViewAttributes Scope="Recursive" />
</QueryOptions>

webID

可选参数。具体用法查看MSDN

    ListGUID可以通过调用Lists.GetListAndView()方法,在返回的报文中获取到。

http://msdn.microsoft.com/zh-cn/library/websvclists.lists.getlistandview.aspx

5. Customer List
中的列名变化?

   
Customer List中创建一个新列时,Sharepoint同时给它赋予了内部名称(FieldInternalName)和外部名称(FieldName),初始状态下内部名称和外部名称是相同的,当我们修改了List的列名时,外部名称被修改了,而内部名称则不变,为了防止在使用时出现找不到列的错误,必须在CAML中使用内部名称作为列名。可以借助CAML工具查找列的内部名称,也可以在List的新建记录页面中查看源代码,搜索显示的列名,找到类似于下面的代码段,FieldInternalName的值即为该列的内部名称。

Code

 

 

CAML

     [Today+3Day(s)]对时间的筛选

     caml查询的时候默认是不精确匹配时间的,需要加上一个属性,就是
IncludeTimeValue='true'
使得caml查询变成

 

<Where>
                                           
                                              
<Eq>
                                                
<FieldRef Name='_ModerationStatus' />
                                                
<Value Type='ModStat'>已批准</< SPAN>Value>
                                             
</< SPAN>Eq>
                                              
<Leq>
                                                 
<FieldRef Name='" + list.Fields["公告发布时间"].InternalName + @"' />
                                                 
<Value Type='DateTime' IncludeTimeValue='true'>+ DateTime.Now.ToString() + @"Z</< SPAN>Value>
                                              
</< SPAN>Leq>
                                            
                                       
</< SPAN>Where>

 

这样再查询的话,就是精确匹配时间的查询了。

转自http://www.cnblogs.com/virusswb/archive/2008/12/25/1361986.html

 在设计的流程的时候.往往每个审批着在MOSS里面分配的都是角色 或者用户组.都存在多个人.

在任务列表里面我的任务应该怎么设计 ? 因为默认的任务列表,我的任务  是分配者等于本人.可是我们在

流程里面分配的是 角色 或者 用户组...这样默认视图是肯定无法解决我们的问题.

创建我们新的视图,势在必行....

 

 

          1. 先在‘任务’列表中新建一个视图,例:MyTasks

    2.在SharePoint Designer中找到‘任务’列表并打开其中的 MyTasks.aspx页面

方法:找到从"&lt;Query&gt;"开头到"&lt;/Query&gt;"结尾的中间一段代码,用
下面的代码替换即可。(替换“<>”为“&lt;&gt;”)

这样分配用户组的问题就解决啦 ...

<Where> 
    
<And>
 
        
<Or>
 
            
<Membership Type="CurrentUserGroups">
 
                
<FieldRef Name="AssignedTo"/>
 
            
</Membership>
 
            
<Eq>

                
<FieldRef Name="AssignedTo"/>
                
<Value Type="Integer">
                    
<UserID/>
                
</Value>
            
</Eq>
        
</Or>
        
<Eq> 
            
<FieldRef Name='Completed'/>

            
<Value Type='Text'>0</Value> <!--100=已完成,0=未完成-->
        
</Eq>
    
</And> 
</Where>

 

替换之后的代码应该是这样的 :

&lt;Where&gt; &lt;And&gt; &lt;Or&gt; &lt;Membership Type="CurrentUserGroups"&gt;&lt;FieldRef Name="AssignedTo"/&gt;&lt;/Membership&gt;&lt;Eq&gt;&lt;FieldRef Name="AssignedTo"/&gt;&lt;Value Type="Integer"&gt;&lt;UserID/&gt;&lt;/Value&gt;&lt;/Eq&gt;&lt;/Or&gt;&lt;Eq&gt;&lt;FieldRef Name='Completed'/&gt;&lt;Value Type='Text'&gt;0&lt;/Value&gt; &lt;/Eq&gt;&lt;/And&gt;&lt;/Where&gt;

直接修改Query ..保存...

我的为审批的任务就完成啦 .....

我参与的任务 .

怎么做?其实很简单...只需要把 我的任务 里面的Completed  设置为100 就是 完成...嘿嘿 ...

 

一、CAML簡介:

        全稱:協作應用程序標記語言

        用於在WSS中定義在網站和列表中使用的字段和視圖,還用於在網站設置過程中定義WSS數據庫中的表

 

二、CAML的作用:

        1. 使用CAML自定義網站

               

        2. 使用CAML進行呈現

                CAML用於WSS中兩種類型的呈現:

A.          定義字段中包含的數據的類型(數據定義元素)

B.          構造瀏覽器中顯示的HTML(HTML呈現元素)

CAML有兩種類型的元素:

A.          用於字段呈現與架構定義的元素

B.          用於頁呈現的元素

 

        3. 使用CAML進行編程

Ø   創建自定義網站定義和配置

Ø   使用網站定義配置

Ø   設置文件

Ø   創建簡單功能

Ø   自定義Delegate控件

Ø   向用戶界面添加操作

Ø   創建事件處理程序功能

Ø   創建自定義列表定義

Ø   自定義Sharepoint網站的徽標

Ø   向網站定義中添加文檔模板、文件類型和編輯應用程序

Ø   創建解決方案

Ø   向列表添加內容類型

Ø   向網站添加內容類型

Ø   部署工作流模板

Ø   向列表添加列

Ø   引用內容類型中的列

Ø   自定義字段類型定義


 

 

三、數據定義元素:

        CAML字段呈現元素在呈現單個字段時使用,這些字段可顯示在字段類型定義(12"TEMPLATES"XML"FldTypes?.xml)

        每一個字段的定義都由兩個部份組成:

a.      字段定義部份

<Field >內容</Field>

Name值說明:

Ø   AllowBaseTypeRendering:默认值为 FALSE。設置為True表示該字段在顯示時如果出錯就顯示成父類型

Ø   TypeName:字段類型名稱

Ø   ParentType:父類的名稱

Ø   TypeDisplayName:顯示名稱(是指在列表设置页面中显示的名称)

Ø   TypeShortDescription:簡短說明(则是在创建栏页面中显示的名称)

Ø   Filterable:此字段是否可用於使用此字段的列表中進行篩選

Ø   Sortable:是否可以在使用了此字段的列表中對此字段進行排序

Ø   ShowOnListAuthoringPages:是否在列表中顯示此字段

Ø   ShowOnDocumentLibraryAuthoringPages:是否在文檔庫中顯示此字段

Ø   ShowOnSurveyAuthoringPages:是否在調查列表中顯示此字段

Ø   ShowOnColumnTemplateAuthoringPages:是否為列模板字段

Ø   FieldTypeClass:該字段的程序集名稱

Ø   FieldEditorUserControl:指定自定義的字段編輯屬性控件(field_typeFieldEditor.ascx)地址,如果不存在該元素,则字段类型的特定属性将由 PropertySchema 元素(字段类型)元素呈现。

Ø   InternalType:表示一个内部基本类型,不要在自定义字段类型定义中使用此元素

Ø   SQLType:表示将用于在内容数据库中存储数据的SQL数据类型,不要在自定义字段类型定义中使用此元素

b.      字段呈現部分

<RenderPattern >
</RenderPattern>

Name值說明:

Ø   HeaderPattern:定義列標題在列表視圖頁面上的呈現定

Ø   DisplayPattern:定義字段在視圖”(列表項)表單和列表視圖頁面上的呈現模式(DispForm.aspxAllItems.aspx頁面上的呈現模式)

Ø   EditPattern:定義字段在EditFrom.aspx頁面上的呈現模式

Ø   NewPattern:定義字段在NewForm.aspx頁面上的呈現模式

Ø   其它三個基本上用不到,這里就不列出來了

 

可使用的CAML元素:

Ø   Column:返回特定字段的原始数据值

Ø   Column2:用于呈现链接字段类型

Ø   Escape:用于转义字符串中的特定字符

Ø   FieldFilterOptions:用于 FldTypes.xml HeaderPattern 部分中,以显示筛选器下拉菜单

Ø   FieldRef:用于计算字段以引用构成字段,还用于视图中以定义存在哪些字段

Ø   FieldSortImageURL:返回指向用于指示如何对列进行排序的图像文件的 URL

Ø   FieldSortParams:返回列表的排序方向,基于是否已排序字段以及当前默认排序方向来呈现 Asc Desc

Ø   IfEqual:允许基于两个 CAML 表达式的比较结果进行条件呈现

Ø   IfNew:如果项被视为新项,则返回 TRUE

Ø   ImagesPath:返回项目的图像目录的 HTTP 路径

Ø   Limit:将文本截断为指定大小

Ø   LocaleInfo:将服务器区域设置信息传输到客户端,以便正确显示和编辑日期和数字

Ø   PageUrl:用于任何位置,以返回当前页的绝对、编码的 URL

Ø   Property:从当前 ForEach 上下文返回属性

Ø   ScriptQuote:用于从服务器呈现必须解释为引用字符串的文本

Ø   TodayISO:以 ISO 格式呈现当前日期和时间

c.       字段屬性設置部分(在未指定FieldEditorUserControl時使用)
<PropertySchema>

<Fields>

<Field DisplayName="desc" DisplaySize="30" Type="Text">

<Default></Default>

</Field>

</Fields>

</PropertySchema>

四、HTML呈現元素

        頁面呈現CAML元素用於呈現頁面,如需要提取特定字段的屬性並將其呈現在面面上時

       

名称

说明

Batch

用于批处理 HTTP 协议中的命令。

Case

用于在 Switch FieldSwitch 语句内执行比较。

Default

包含将新的项目表单初始化为的字段的默认值。

Expr

包含一个 CAML 表达式,计算该表达式以确定 Switch FieldSwitch 语句的操作过程。

FieldSwitch

基于 CAML 表达式的值提供条件呈现。

ForEach

提供一个用于枚举当前列表中定义的视图或字段的集合的基本机制。

GetVar

在呈现页面的上下文中返回一个变量。

HTMLBase

返回一个为当前页面设置基元素的字符串。

HttpHost

呈现包含当前网站的虚拟服务器的 URL

HttpPath

返回适当的 OWSSVR.DLL 的路径。

HttpVDir

返回当前网站的根目录。

IfEqual

允许基于两个 CAML 表达式的比较结果进行条件呈现。

ListProperty

从数据库返回指定列的值。

Now

呈现当前时间。

Project

Onet.xml 中的顶级元素。

ProjectProperty

返回当前工作组网站的全局属性。

Property

从当前 ForEach 上下文返回属性。

SetList

指定当前列表。

SetVar

在呈现页面的上下文中设置变量。

Switch

允许基于 CAML 表达式的值的条件呈现。

Today

呈现当前日期。

URL

呈现一个 URL

View

Windows SharePoint Services 中定义视图。

XML

用作外部包装以表示 CAML 的一节。

 

五、CAML查詢架構

        用來定義對列表數據的查詢
        參考:http://msdn.microsoft.com/zh-cn/library/ms467521.aspx

 

六、CAML視圖架構

        用來定義列表視圖在WSS中的呈現方式

        參考:http://msdn.microsoft.com/zh-cn/library/ms439798.aspx

 

七、CAML List架構

        用來定義創建列表的元數據

        參考:http://msdn.microsoft.com/zh-cn/library/aa543477.aspx

 

八、CAML網站架構

        用來定義創建網站集或網站的元數據。

网站定义指定导航栏、列表模板、文档模板、列表基本类型、配置、模块、
组件和服务器电子邮件页脚,以创建网站。

        參考:http://msdn.microsoft.com/zh-cn/library/aa544502.aspx

 

九、文檔圖標架構

        DocIcon.xml文件中使用文檔圖標架構可將文件擴展名和ProgID映射到相磁圖標

        參考:http://msdn.microsoft.com/zh-cn/library/aa979708.aspx

 

十、其它架構

Ø   内容类型定义架构

Ø   功能架构

Ø   自定义字段类型定义

Ø   Solution 架构

Ø   升级定义架构

Ø   工作流程定义架构

參考:http://msdn.microsoft.com/zh-cn/library/ms460357.aspx

  

 

AllDayEvent The all day event flag is used in calendar lists.
Attachments The URL of an attachment.
Boolean A boolean indicator with Yes/No.
Calculated Indicates that the column is a calculated column based on a expression.
Choice Indicates that the column is choice from a list of items
Computed Indicates the field's value is dependant on another field's value.
ContentTypeId A Content Type ID value.
Counter An internal unique ID's / counter for each item.
Currency A currency value (its format depends on the locale).
DateTime A Date and Time field.
File A file object when used in document libraries.
GridChoice A rating scale as used in surveys
Guid A globally unique identifier.
Integer An integer number field.
Lookup The field is a lookup which is a choice, however the choice is from another list.
LookupMulti A lookup field, however multiple selections are allowed.
ModStat An approval status.
MultiChoice A choice field, however multiple selections are allowed
Note Multiple lines of text which can be plain or formatted.
Number A numerical field which allows decimal places.
PageSeparator A page separator field, for surveys.
Recurrence An indicator that identifies the field as a reoccurring calendar event.
Text A single line of text
ThreadIndex The ID of a discussion thread.
Threading Indicates the field supports threading (in discussions).
URL A Unified Resource Locator (URL) is stored.
User A person or group.
UserMulti A person or group, however multiple people or groups can be selected.
WorkflowEventType Contains the type of workflow history event (used in workflow history list).
WorkflowStatus The status of a workflow is stored.

 

posted @ 2009-03-31 13:04  邑尘  阅读(1249)  评论(1编辑  收藏  举报