SPCAMLEditor–灵活实用的CAML编辑工具

(上)

查看word版本:SPCAMLEditor_灵活实用的CAML编辑工具1.doc

CAML简述

CAML全称Collaborative Application Markup Language,翻译成协作应用程序标记语言,是一种基于XML的语言。SharePoint利用CAML来描述各种对象的属性设置,定义视图的显示样式和逻辑等。 SharePoint中处处有CAML的影子,字段定义,列表定义,视图定义,内容类型,站点定义等等都是采用CAML来实现。可以说,CAML将SHAREPOINT中的各种元素(页面,字段,DLL)"胶合"在一起。了解甚至精通CAML,对SHAREPOINT开发人员很是必要。

本文将对CAML进行简要介绍,并介绍一个CAML编辑工具-SPCAMLEditor,利用SPCAMLEditor修改站点对象的CAML定义,是一种"独特"的SharePoint定制手段,可以"快速"的实现一些常见的功能。

笔者对CAML也不能称之为"精通"只能算"初窥其门",开发中用到啥查啥,希望本文能起到抛砖引玉的作用。

SPCAMLEditor介绍

SPCAMLEditor是一个修改SharePoint站点对象属性和CAML定义的工具。它提供了CAML编辑时的智能提示功能,实现了视图CAML编辑的即时预览。利用这个工具,可以方便的修改视图和列表栏的Schema定义,来实现一些特殊的功能。

SharePoint站点对象属性

站点对象属性的查看

一个SharePoint对象,一般具有两类属性:简单属性和Schema属性。简单属性采用简单类型来定义,Schema属性一般是字符串类型的,字符串中的内容实际上是对象的CAML定义。使用SPCAMLEditor可以方便的查看站点对象的所有属性。

使用方法:

利用File->Open菜单,输入站点的URL打开站点。如下图。

在导航树任一个节点右击,出现操作菜单,利用其中的Property项可以查看或修改对象的属性,如下图:

选中某个对象之后,通过SchemaXml标签可以查看内容类型,列表,视图,列表字段的CAML定义。如下图:

站点对象属性的修改

通过修改SharePoint对象的属性,我们可以定制站点的外观和行为,SharePoint的网站管理提供了部分对象属性的设置功能,但是还有很多的属性配置是"隐藏"起来的,我们只能通过对象模型写代码来控制。有了SPCAMLEditor,只要是站点对象可以修改的属性,都可以方便的配置。

我们经常碰到的一个需求是:控制列表表单页面可以显示或编辑的字段。通过SPCAMLEditor可以很方便的实现这一点。

下面演示如何将任务列表的完成百分比栏从新建页面隐藏掉。

操作步骤:

Step1:找到要修改的栏。

利用SPCAMLEditor打开站点,展开要修改的任务列表,展开Fields节点,找到完成百分比栏。如下图:

Step2:调出属性修改窗口。

通过鼠标右键菜单的Property菜单项调出属性修改窗口。

Step3:修改属性值。

将ShowInDisplayForm属性值改为False,单击OK按钮。

Step4:最后,可以到站点上查看效果了:

修改之前的新建页面:

修改之后的新建页面:

定制SharePoint列表栏

对列表栏的小修小改是我们定制SHAREPOINT时经常要做的,一般我们采用以下的手段来实现:

  1. 利用SharePoint Designer将列表webpart转换成数据视图,然后修改xslt。
  2. 自己开发字段类型。

    方法1做起来较简单,但是列表转换成数据视图之后就丧失了一些功能,比如动态修改视图字段。

    方法2是最灵活的,但是缺点就是麻烦,开发一个字段类型要编写xml,写一个继承与SPField的类,再写一个继承与BaseFieldControls的类,然后部署到GAC中。当然,如果我们做的这些工作是为了实现一个通用的功能,那也是值得的。但是如果只是针对"特殊"的需求,做这个就"太浪费代码了"。

    那么有什么更好的方法吗?即简单,又能跟系统机制完美结合?

    答案就是SPCAMLEditor。

    利用SPCAMLEditor,可以直接修改字段的Schema,或者创建出具有新Schema的字段。

    下面举一个实际的例子。

功能描述:在列表页面添加一个链接栏,单击这个链接可以转到某个页面(/_layouts/page1.aspx),并把当前列表项的ID作为参数传递(page1.aspx?ID=1)。

操作步骤:

Step1: 基于已有的字段创建一个新的字段。

利用SPCAMLEditor打开站点,找到要修改的列表,展开Fields节点。如下图:

一般我们以系统的"编辑"字段作为模板,复制出一个新的字段。

找到"编辑"字段,通过右键菜单的Copy创建一个新的字段。

注意:创建新字段的时候有时会出错,不过没关系,若出错,通过工具栏上的Reflash按钮刷新一下界面,然后找到我们新建的字段:

选中这个字段,然后单击SchemaXml选项卡中的DisplayPattern节点。

DisplayPattern定义了字段的呈现逻辑。如下图:

我们可以仔细观察一下DisplayPattern的内容,这是标准的CAML语句。

IfHasRights和RightsChoices指定只有用户具有EditListItem权限时字段内容才会呈现。

<URL Cmd="Edit" />输出了当前列表项的编辑页面的URL。注意GoToLink函数,这个JS函数会自动附加当前页面的URL到Edit页面,一般我们链接到表单页面时,页面URL是这样的格式:DispForm.aspx?ID=17&Source=XXX。 这个Source参数就是GoToLink函数附加上的。

下表列出了一些常用的CAML标签,更多标签请参考SDK。

CAML标签

说明

示例

HTML

输出HTML

<HTML><![CDATA[" ]]></HTML>

Column

输出字段值,

当前字段:<Column/>

指定其他字段名:<Column Name="Title" />

Field

完整输出一个字段,用于联合几个字段的输出。Filed跟Column的区别是:Column只包含值,Field通常不仅包含值还包含字段定义的其他HTML

当前字段:<Field/>

其他字段:<Field Name="Title"/>

Property

输出字段属性,采用Select指定属性名

<Property Select=' DisplayName' URLEncode="TRUE"/>

URL

输出跟当前列表项有关的URL

查看页面:<URL Cmd="Display" />

编辑页面:<URL Cmd="Edit" />

新建页面:<URL Cmd="New" />

Now

输出当前时间

<Now/>

Step2: 修改字段名称

通过字段右键菜单中的Property菜单项调出字段属性修改窗体,修改其Title属性为"查看关联数据",单击OK按钮保存。

Step3:修改DisplayPattern的内容

我们不需要控制这个链接的权限,所以不需要IfHasRights标签。选中DisplayPattern节点,将其内容改为如下内容:

<DisplayPattern>

<HTML><![CDATA[<a href=" /_layouts/page1.aspx?ID=]]></HTML>

<Column Name="ID" />

<HTML><![CDATA[" οnclick="GoToLink(this);return false;" target="_self">]]></HTML>

<HTML>查看关联数据</HTML>

<HTML><![CDATA[</a>]]></HTML>

</DisplayPattern>

以上的CAML定义很简单,输出链接的HTMl然后利用Column标签嵌入当前列表项的ID。

Step4:预览或保存

SPCAMLEditor对字段Schema的修改默认是没有即时预览功能的,您必须手工保存字段的修改(通过右键菜单的Update菜单项)才能查看效果。有时候我们在开发一个字段的时候需要频繁的测试查看效果,如果每次修改都去点一下那个Update菜单也的确烦人。我们可以配置一下让SPCAMLEditor在预览时自动保存修改,如下图:

注意:对系统字段的修改可能引发错误,修改的时候一定要谨慎,可以在修改前把字段的Schema保存下来,若出错了覆盖回去即可。对于我们新创建的字读,就可以随便改了。

在这里我们设置允许自动保存字段的修改,切换到Preview选项卡,即可以看到修改结果:

Step5:将字段添加到视图

首先通过Property菜单项找到这个字段的InternalName,笔者的环境中是:_x7f16__x8f91__Copy,如下图:

然后,单击需要放置这个字段的视图,将_x7f16__x8f91__Copy添加进ViewFields节点。

单击视图节点的Update菜单,完成修改。

SPCAMLEditor中的链接是不允许点击的,我们可以利用IE打开站点,查看定制的最终的效果。

这是一个简单的例子,在这个例子的基础上,可以扩展出更强的功能,比如利用JS脚本window.open打开一个新窗口。

笔者曾写过更复杂的例子。有兴趣的朋友可以参看这两篇文章:

实现视频播放器字段:

http://www.cnblogs.com/jianyi0115/archive/2008/04/28/1175259.html

实现顺序号字段:

http://www.cnblogs.com/jianyi0115/archive/2008/05/28/1209039.html

如何得到SPCAMLEditor

SPCAMLEditor最新版本请到http://www.codeplex.com/spcamleditor下载。 软件第一次运行时会注册一些DLL,出现一个控制台窗口,忽略即可。

注意:SPCAMLEditor通过对象模型访问SharePonit,而对象模型只有在服务器上才可用,应此,这个工具只能在SharePoint服务器上使用。

SPCAMLEditor–灵活实用的CAML编辑工具(上)相关推荐

  1. 在线文档编辑工具比较

    这段时间因为写源码分析,寻找了几款在线编辑工具,最后到头来,发现还是Google Doc最实用,下面几点是我发现的特色: 1. Google Doc采用了Gear技术,支持离线编辑和保存.定时保存等功 ...

  2. 怎么检测不到我的音频_Linux 上的最佳音频编辑工具推荐 | Linux 中国

    在 Linux 上,有很多种音频编辑器可供你选用.不论你是一个专业的音乐制作人,还是只想学学怎么做出超棒的音乐的爱好者,这些强大的音频编辑器都是很有用的工具.-- Ankush Das(作者) 在 L ...

  3. d3.js 旋转图形_Mac平台上一款方便实用的图形编辑软件

    DrawPad for Mac是一款方便实用的图形编辑软件.用户可以使用这个软件自由地绘制草图和绘画,创建徽标,横幅广告或广告牌以及绘制图表和其他Web图形等.同时,这款软件能够支持众多的图像格式类型 ...

  4. 常见的文件后缀名和对应的编辑工具(上)

    小伙伴们往往会在看到一些陌生的后缀名的时候,会感到很彷徨,上网查找半天也找不到合适的工具打开,下面我给大家附上常见的后缀名和他们对应的编辑工具 内容太多,先发个上半段A-R ai 用adobe ill ...

  5. 苹果电脑上不错的几个矢量图形编辑工具

    矢量图形是面向对象的图像或绘图图像,在数学上定义为一系列由点连接的线,优秀的矢量图形编辑工具可以帮助更好的设计,完成工作,这篇文章为大家介绍苹果电脑上不错的几个矢量图形编辑工具,可以参考一下. 第一款 ...

  6. linux 音频处理工具,Linux 上的最佳音频编辑工具推荐 | Linux 中国

    在 Linux 上,有很多种音频编辑器可供你选用.不论你是一个专业的音乐制作人,还是只想学学怎么做出超棒的音乐的爱好者,这些强大的音频编辑器都是很有用的工具. -- Ankush Das 在 Linu ...

  7. 几个实用的软件开发工具之——代码编辑工具

    1 代码编辑工具 1.1 source insight Source insight 是一款非常优秀的代码编辑软件,支持创建工程(同时支持网络创建),语法着色,词语联想,它的代码搜索功能非常强大,非常 ...

  8. 苹果电脑上几个专业的数码照片编辑工具

    使用数码相机拍摄的图片一般是raw格式,raw格式如果强行转化成jpg,多数会有不同程度的损伤,所以我们要编辑数码照片的话,需要对应功能的软件,来保证图片的清晰度和细腻度,我整理了几款比较好用的可以编 ...

  9. OC实用转换model的工具

    OC实用转换model的工具 说明 这是本人写的一个专门用来将json数据直接转换生成Model文件的工具,目的是为了让你从写Model文件的繁琐过程中解脱出来,提升效率以及减少出错的几率,工具的特点 ...

最新文章

  1. 六自由度高超声速飞行器的建模与控制器设计
  2. 差分约束 4416 FFF 团卧底的后宫
  3. julia(6)-循环与猜数字
  4. 《面向对象分析与设计》一3.2 参与者
  5. java math rint_Java Math.rint() 方法
  6. 通过 Feature Level 动态控制 SAP Spartacus 的页面显示
  7. 记录——《C Primer Plus (第五版)》第十一章编程练习第三题
  8. 微软全面拥抱 AI!
  9. by mybatis 自定义order_MyBatis动态SQL实现ORDER BY和LIMIT的控制?
  10. 29 顺时针打印矩阵(四-画图让抽象问题形象化)
  11. App后台开发(学习笔记)
  12. TDDFT计算软件Octopus学习笔记(一):Ubuntu下Octopus的安装
  13. 行政事业单位固定资产管理系统,资产管理系统操作手册
  14. 计算程序运行时间,并将毫秒换算成人看得懂的文字,展示形式为时分秒
  15. Windows下CURL编译 支持HTTPS
  16. 后勤事务繁杂低效?三步骤解决企业行政管理难题
  17. cp 命令 提示cp: 略过目录 “/root/temp/sk”
  18. 安卓系统PK浏览器:物联网开发,哪个才是最佳之选?
  19. #智能制造#第一章 智能制造,缘何而起?
  20. 深圳大学计算机专业保研率,深圳最好的公立大学(本科阶段)南方科技大学,2018级保研率应该会提高到30%...

热门文章

  1. injectionForXcode代码注入步骤
  2. 添加序号列(SQL Server)
  3. Android 保存图片到系统及相关问题的解决方案
  4. Ubuntu 12.10 安装 PHP
  5. 关于交换机SVI(转)
  6. 应用流量管理,新网络管理必修课
  7. 谷歌宣布即将开放 .dev 顶级域名注册
  8. Bootstrap+PHP实现多图上传
  9. Oracle按照时间统计总结
  10. IGMP V1 V2 V3 定义和区别