SPCAMLEditor–灵活实用的CAML编辑工具(上)
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时经常要做的,一般我们采用以下的手段来实现:
- 利用SharePoint Designer将列表webpart转换成数据视图,然后修改xslt。
- 自己开发字段类型。
方法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编辑工具(上)相关推荐
- 在线文档编辑工具比较
这段时间因为写源码分析,寻找了几款在线编辑工具,最后到头来,发现还是Google Doc最实用,下面几点是我发现的特色: 1. Google Doc采用了Gear技术,支持离线编辑和保存.定时保存等功 ...
- 怎么检测不到我的音频_Linux 上的最佳音频编辑工具推荐 | Linux 中国
在 Linux 上,有很多种音频编辑器可供你选用.不论你是一个专业的音乐制作人,还是只想学学怎么做出超棒的音乐的爱好者,这些强大的音频编辑器都是很有用的工具.-- Ankush Das(作者) 在 L ...
- d3.js 旋转图形_Mac平台上一款方便实用的图形编辑软件
DrawPad for Mac是一款方便实用的图形编辑软件.用户可以使用这个软件自由地绘制草图和绘画,创建徽标,横幅广告或广告牌以及绘制图表和其他Web图形等.同时,这款软件能够支持众多的图像格式类型 ...
- 常见的文件后缀名和对应的编辑工具(上)
小伙伴们往往会在看到一些陌生的后缀名的时候,会感到很彷徨,上网查找半天也找不到合适的工具打开,下面我给大家附上常见的后缀名和他们对应的编辑工具 内容太多,先发个上半段A-R ai 用adobe ill ...
- 苹果电脑上不错的几个矢量图形编辑工具
矢量图形是面向对象的图像或绘图图像,在数学上定义为一系列由点连接的线,优秀的矢量图形编辑工具可以帮助更好的设计,完成工作,这篇文章为大家介绍苹果电脑上不错的几个矢量图形编辑工具,可以参考一下. 第一款 ...
- linux 音频处理工具,Linux 上的最佳音频编辑工具推荐 | Linux 中国
在 Linux 上,有很多种音频编辑器可供你选用.不论你是一个专业的音乐制作人,还是只想学学怎么做出超棒的音乐的爱好者,这些强大的音频编辑器都是很有用的工具. -- Ankush Das 在 Linu ...
- 几个实用的软件开发工具之——代码编辑工具
1 代码编辑工具 1.1 source insight Source insight 是一款非常优秀的代码编辑软件,支持创建工程(同时支持网络创建),语法着色,词语联想,它的代码搜索功能非常强大,非常 ...
- 苹果电脑上几个专业的数码照片编辑工具
使用数码相机拍摄的图片一般是raw格式,raw格式如果强行转化成jpg,多数会有不同程度的损伤,所以我们要编辑数码照片的话,需要对应功能的软件,来保证图片的清晰度和细腻度,我整理了几款比较好用的可以编 ...
- OC实用转换model的工具
OC实用转换model的工具 说明 这是本人写的一个专门用来将json数据直接转换生成Model文件的工具,目的是为了让你从写Model文件的繁琐过程中解脱出来,提升效率以及减少出错的几率,工具的特点 ...
最新文章
- 六自由度高超声速飞行器的建模与控制器设计
- 差分约束 4416 FFF 团卧底的后宫
- julia(6)-循环与猜数字
- 《面向对象分析与设计》一3.2 参与者
- java math rint_Java Math.rint() 方法
- 通过 Feature Level 动态控制 SAP Spartacus 的页面显示
- 记录——《C Primer Plus (第五版)》第十一章编程练习第三题
- 微软全面拥抱 AI!
- by mybatis 自定义order_MyBatis动态SQL实现ORDER BY和LIMIT的控制?
- 29 顺时针打印矩阵(四-画图让抽象问题形象化)
- App后台开发(学习笔记)
- TDDFT计算软件Octopus学习笔记(一):Ubuntu下Octopus的安装
- 行政事业单位固定资产管理系统,资产管理系统操作手册
- 计算程序运行时间,并将毫秒换算成人看得懂的文字,展示形式为时分秒
- Windows下CURL编译 支持HTTPS
- 后勤事务繁杂低效?三步骤解决企业行政管理难题
- cp 命令 提示cp: 略过目录 “/root/temp/sk”
- 安卓系统PK浏览器:物联网开发,哪个才是最佳之选?
- #智能制造#第一章 智能制造,缘何而起?
- 深圳大学计算机专业保研率,深圳最好的公立大学(本科阶段)南方科技大学,2018级保研率应该会提高到30%...