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. Sharepoint的List中允许创建Document和Folder两种类型的数据,在查询时如何查出非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的名称,也可以为List的GUID,不能为空。 |
viewName |
一般都为空。 |
query |
标准CAML查询语句,可以为空,<Query></Query> |
viewFields |
要查询的字段,可以为空,<ViewFields></ViewFields> |
rowLimit |
返回的记录条数,默认为100,如果不需要限制,将值设为0 。 |
queryOptions |
查询选项设置,所涉及到的选项比较多,可以参考MSDN。 |
webID |
可选参数。具体用法查看MSDN。 |
List的GUID可以通过调用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页面
方法:找到从"<Query>"开头到"</Query>"结尾的中间一段代码,用
下面的代码替换即可。(替换“<>”为“<>”)
这样分配用户组的问题就解决啦 ...
<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>
替换之后的代码应该是这样的 :
<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> </Eq></And></Where>
直接修改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.aspx與AllItems.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元素用於呈現頁面,如需要提取特定字段的屬性並將其呈現在面面上時
名称 |
说明 |
用于批处理 HTTP 协议中的命令。 | |
用于在 Switch 或 FieldSwitch 语句内执行比较。 | |
包含将新的项目表单初始化为的字段的默认值。 | |
包含一个 CAML 表达式,计算该表达式以确定 Switch 或 FieldSwitch 语句的操作过程。 | |
基于 CAML 表达式的值提供条件呈现。 | |
提供一个用于枚举当前列表中定义的视图或字段的集合的基本机制。 | |
在呈现页面的上下文中返回一个变量。 | |
返回一个为当前页面设置基元素的字符串。 | |
呈现包含当前网站的虚拟服务器的 URL。 | |
返回适当的 OWSSVR.DLL 的路径。 | |
返回当前网站的根目录。 | |
允许基于两个 CAML 表达式的比较结果进行条件呈现。 | |
从数据库返回指定列的值。 | |
呈现当前时间。 | |
Onet.xml 中的顶级元素。 | |
返回当前工作组网站的全局属性。 | |
从当前 ForEach 上下文返回属性。 | |
指定当前列表。 | |
在呈现页面的上下文中设置变量。 | |
允许基于 CAML 表达式的值的条件呈现。 | |
呈现当前日期。 | |
呈现一个 URL。 | |
在 Windows SharePoint Services 中定义视图。 | |
用作外部包装以表示 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. |