在MOSS里字段类型得到了广泛的应用,文档库,表单库,列表,内容类型都需要用到字段类型进行扩展。这里的字段类型也就是我们通常所指的像文本,数字,Bool,日期等类型。MOSS本身内置了很多字段类型(MOSS的版本不一样,看到的字段也会有点差别):
可是这些默认的字段类型有时候无法满足我们的需求,比如:
-更丰富的输入,显示UI
-更复杂的逻辑或数据合法性判断检测
因此需要我们去自定义开发满足用户需求的自定义字段类型
做了一个简单的Demo,验证Email格式的自定义字段类型
代码下载
一个标准的自定义字段类型,分为这么几个部分(*为必须的):
1. *字段类 –对应这个解决方案中的Email.Field.cs
它可以继承自某个内置的字段类型,比如文本类型SPFieldText, 也可以直接继承自最基础的类型SPField
常用的内置字段类型:
单行文本 – SPFieldText
多行文本 – SPFieldMultiLineText
数字 – SPFieldNumber
货币 – SPFieldCurrency
是/否 – SPFieldBoolean
日期 - SPFieldDateTime
选项(单选) - SPFieldChoice
…
2. 字段值类 –对应Email.Field.Value.cs
3. 字段UI -EmailFieldRendering.ascx,也可以不用用户控件,直接render
4. *字段定义文件 -fldtypes_Email.xml
该xml文件中定义了关于该字段类型的一些基本信息,且必须以fldtypes_开头命名
<FieldName="TypeName">Email</Field>
<FieldName="ParentType">MultiColumn</Field>
<FieldName="TypeDisplayName">Email</Field>
简单的说,一个自定义字段类型包含3个部分:assembly(dll),UI(ascx),description file(xml)
自定义字段类型部署:
1. 注册assembly(dll) 到 GAC
2. Copy UI用户控件 .ascx到..."12"TEMPLATE"CONTROLTEMPLATES
3. Copy 类型定义文件fldtypes_*.xml到.."12"TEMPLATE"xml
4. 重启IIS iisreset
部署完之后,在创建栏的时候,就会看到我们开发的自定义字段类型了。
虽然自定义字段类型是很好用,但是就目前来说它还是有不足的地方:
我们知道MOSS 2007和Office 2007之间几乎是做了无缝的整合,我们在用office 2007客户端打开MOSS文档库或列表库里的文档的时候,Office 2007里的”文档信息面板”会自动显示出该文档库或列表库里的MOSS内置字段类型创建的栏。而至少目前2007的版本它是不支持自定义字段类型的客户端支持。
还有一点就是自定义字段类型的值不能超过255个字符.