本文将通过两种方式实现SharePoint 2007中自定义字段的CAML调用 jQuery AJAX。分别是:
1、传统的编写代码的方式,配合FLDTYPES_你的字段类型.xml,生成自定义字段类型。
2、使用jianyi的 SPCAMLEditor工具,直接修改某列表的字段的CAML。
前者可重用性高, 而后者简单快速,大家可以根据自己的情况进行选择。
我们知道,在字段的架构CAML中可以编写客户端代码,如HTML标记,CSS和Javascript代码。得益于jQuery AJAX的强大,我 们可以进一步的在字段CAML中以异步方式处理与服务器端的查询,而不必重新加载页面。两者结合起来,一定可以极大丰富自定 义字段的使用体验。
首先 ,我们来看传统编码方式的实现步骤:
新建一个项目, 本例中,我们直接使用类库项目。为其起一个名字:
复制12 hive目录(就是C:\Program Files\Common Files\Microsoft Shared\web server extensions\12,这是 Todd Bleeker的说法)的结构,以便放置自定义字段类型。根据需要重命名class1.cs(这里为QuickViewField.cs)
我们创建了XML文件夹来存放字段定义文件FLDTYPES_...,在这个文件里会调用jQuery。我们还创建了LAYOUTS\jQuery来存放 jquery文件。你可以从http://jquery.com/下载它。
有很多方式可以引用jquery文件。你可以直接通过google引用,但这种方式不推荐用于生产环境。你也可以将其存放在 _layouts下的某个地方,或者放在样式库中,完全看个人喜好了。
本例中,我决定把它放在LAYOUTS下。
接下来,你需要为你的组件添加一个强名。
现在,开始编写QuickViewFieldType.cs的代码:
public class QuickViewFieldType:SPFieldText
{
public QuickViewFieldType(Microsoft.SharePoint.SPFieldCollection fields, string typeName, string displayName)
: base(fields, typeName, displayName)
{ }
public QuickViewFieldType(SPFieldCollection fields, string fieldName)
: base(fields, fieldName)
{ }
public override void OnAdded(SPAddFieldOptions op)
{
base.OnAdded(op);
this.ShowInDisplayForm = false;
this.ShowInEditForm = false;
this.ShowInNewForm = false;
this.Update(true);
}
}
里面有2个默认的构造器。OnAdded覆写方法是为了确保该字段不会显示在Disp/Edit/NewForm.aspx中(也就是列表的显示, 编辑,新建页面)。