如何:创建自定义字段类
上次修改时间: 2015年3月9日
适用范围: SharePoint Foundation 2010
若要创建自定义字段类型类,必须从 SPField 类或下表列出的类(这些类都从 SPField 类派生)之一派生类。
备注
还存在其他字段类型类(其名称采用 SPField* 模式的类),但是由于 Microsoft SharePoint Foundation 以特殊方式处理这些类,因此不支持从它们派生新类。
我们建议您在创建直接或间接从 SPField 类派生的自定义字段类时使用下面的命名约定:
字段类型名称Field
正确命名的类的示例为 TargetDateField 和 RegularExpressionField。(SharePoint Foundation 附带的从 SPField 派生的类在确定此命名约定之前已创建,并且采用模式 SPField字段类型名称,例如 SPFieldDateTime。)
可以从下列 SPField 类成员派生自定义字段类
不直接从 SPField 类继承的自定义字段类型类必须从下列类之一派生。
类 |
说明 |
---|---|
表示 Boolean 字段类型。 |
|
表示选项字段类型。 |
|
表示货币字段类型。 |
|
表示日期时间字段类型。 |
|
表示查阅字段。SPFieldLookup 对象的字段值包含在 SPFieldLookupValue 对象中。 |
|
表示多选字段类型。SPFieldMultiChoice 对象的字段值包含在 SPFieldMultiChoiceValue 对象中。 |
|
表示多列字段类型。SPFieldMultiColumn 对象的字段值包含在 SPFieldMultiColumnValue 对象中。 |
|
表示多行文本字段类型。 |
|
表示数字字段类型。 |
|
表示分级字段类型。SPFieldRatingScale 对象的字段值包含在 SPFieldRatingScaleValue 对象中。 |
|
表示单行文本字段类型。 |
|
表示 URL 字段类型。SPFieldUrl 对象的字段值包含在 SPFieldUrlValue 对象中。 |
|
表示 SharePoint Foundation 用户。 |
备注
有关创建自定义字段值类的详细信息,请参阅如何:创建自定义字段值类。
指定自定义字段行为
在选择要从中派生自定义字段类型的字段类后,可以选择要替代该类的哪些成员。由于使字段类型唯一的大多数属性和行为都包含在其类中,因此通过选择新实现将替代的派生自 SPField 的类,即可获得一组丰富的替代语义。
例如,SPField 类包含下列成员,在开发自定义字段类型时,可替代这些成员的实现(如有必要)。
备注
对于在这一节中列出的大多数成员,SPField 类的默认实现不用于执行有用工作;例如,GetFieldValue 仅返回传递给它的内容,而 GetValidatedString 仅调用值类的 ToString 方法(不包含任何验证逻辑)。因此,如果自定义字段类型类是直接从 SPField 派生的,则必须 为需要使用其用途的任何成员提供替代。
经常需要替代的 SPField 类成员
SPField 类成员 |
说明 |
---|---|
返回可用于呈现以下内容的控件:"显示"表单、"编辑"表单和"新建"表单中的字段,以及使用字段控件的所有页面。实例化呈现控件的对象在其 Field 属性中存储对其呈现的字段对象的反向引用。正如这些相互引用所显示的那样,这两个对象是成对出现的。从 SPField 派生的对象处理与内容数据库的交互,而从 BaseFieldControl 派生的呈现控件则处理与用户的交互,以及用户界面 (UI) 中字段的呈现。但请注意,不必使用呈现控件来呈现自定义字段:自定义字段还可以使用字段定义中定义的 RenderPattern 来呈现,在这种情况下,FieldRenderingControl 属性可能为 null。最常见的模式是使用呈现控件在新建模式和编辑模式中呈现字段,并使用呈现模式在显示模式中呈现字段。 如果您确实使用呈现控件,则自定义字段类必须使用以下标准代码模式替代 FieldRenderingControl 属性 get 访问器:
权限属性 (Attribute) 可确保只有具有使用 SharePoint Foundation 对象模型的权限的代码才能读取该属性 (Property)。将字段对象的内部名称分配给 FieldName 属性 (Property) 的行还会将 Field 属性 (Property) 设置为字段对象。这可确保字段类型名称FieldControl 知道它要呈现哪个对象。 |
|
返回可用于呈现移动应用程序中的"显示"表单、"编辑"表单和"新建"表单中的字段的控件。 |
|
返回要在编辑模式下呈现的字段值。此方法用于编辑表单和新建表单。 |
|
在派生类中替代时,将返回验证的字段值。请针对自定义验证和数据序列化逻辑替代此方法。(基方法不提供验证逻辑,而且许多从基方法派生的 SharePoint Foundation 类也不提供验证逻辑。)此方法可能转而使用字段值对象的 ToString 方法将字段值对象转换为字符串。典型的替代应为:
有关详细信息以及替代的 GetValidatedString 的示例,请参阅自定义字段数据验证 |
|
在将字段添加到列表后替代以指定自定义字段类型逻辑。 |
|
在字段更新后替代以指定自定义字段类型逻辑。 |
|
在从列表中删除字段前替代以指定自定义字段类型逻辑。 |
经常在使用复杂自定义数据类型时替代的 SPField 类成员
当字段类型需要与父字段类型不同的复杂自定义数据类型时,您可能还要替代 SPField 类的几个成员。可以使用自定义字段值类来定义此类自定义数据类型。有关详细信息,请参阅如何:创建自定义字段值类。(可能还需要在其他情况下替代这些成员,即使不创建自定义数据类型也是如此。)
SPField 类成员 |
说明 |
---|---|
当特定列表项的字段中没有值时,作为字符串返回可用于该字段的默认值。 |
|
当特定列表项的字段中没有值时,返回可用于该字段的默认值。 |
|
返回字段值类型。 |
|
作为对象返回字段值。 |
|
作为字符串返回字段数据值。 |
|
以字符串形式返回 HTML 格式的字段数据值。此 HTML 格式的字段值最常用于直接在页面上呈现字段值。例如,它在列表项的版本历史记录页面上使用。但是,此 HTML 格式的字段值不在显示表单上使用。显示表单的字段呈现通常从字段类型的 fldtype*.xml 文件中的协作应用程序标记语言 (CAML)DisplayPattern 元素呈现。 |
|
请参阅"指定自定义字段行为"一节中的"注意"。 |
|
对显示和编辑模式中的字段控件的设计时间视图,返回字段数据的预览值。 |