SharePoint 表单工作原理
每个列表类型通常都有一组设置列表时设置的显示、编辑和新建表单 ASPX 页(DispForm.aspx、EditForm.aspx 和 NewForm.aspx)。这些 ASPX 页被设置为“内容空间”。换句话说,它们不位于 \12\TEMPLATE\LAYOUTS,且不通过 /_layouts 虚拟目录操作。对于文档库,这些页在列表中称为 forms 的隐藏子文件夹内设置。对于其他 SharePoint 列表,页在列表根文件夹下设置。这些 ASPX 页中的任一页都包含一个用于呈现表单的 Microsoft.SharePoint.WebPartPages.ListFormWebPart 对象。
Windows SharePoint Services 3.0 使用 ASP.NET 显示表单。每个表单逻辑上由一组控件(例如,工具栏控件)组成。一个称为迭代器 (Microsoft.SharePoint.WebControls.ListFieldIterator) 的特殊控件用于循环访问列表字段集合,并将每个字段添加到表单。
自定义表单模板的选项
在 Windows SharePoint Services 2.0 中,通常通过修改列表的 Schema.xml 文件中的表单定义来自定义列表项表单。Form 元素包含特定类型表单的呈现详细信息,包括定义要在页面中插入的 HTML 和脚本的协作应用程序标记语言 (CAML) 子元素。在 Windows SharePoint Services 3.0 中,表单体系结构已修改为使用 Microsoft ASP.NET 控件模板中内置的模板功能。
注意: |
|---|
|
如果将 Form 元素的 UseLegacyForm 属性设置为 TRUE,您仍可以通过 Schema.xml 应用自定义表单定义,但建议您使用 ASP.NET 控件。 |
尽管表单仍可以在 Schema.xml 中定义,但是现在您可以利用通过 ASP.NET 控件模板中可用的丰富功能来修改表单。控件模板中混合有 HTML 元素和子控件,可将 HTML 插入包含页或控件。通过创建控件模板的层次结构,您可以有效地为 Web 应用程序创建继承模型,从而更有效地重用代码。
通过自定义表单模板,您可以修改列表项表单的呈现方式。在列表定义的 Schema.xml 文件中,您可以通过 Template 属性为每个列表类型指定用于呈现表单的控件模板的 ID。您必须为每个要在其中实现自定义模板的所有表单指定 Template 属性,自定义模板可以是相同的模板或不同的模板。如果不为表单指定自定义模板,则 Windows SharePoint Services 默认实现默认模板。自定义控件模板必须在位于 12\TEMPLATE\CONTROLTEMPLATES 的 .ascx 文件中定义。
小心: |
|---|
|
替代默认 Windows SharePoint Services 模板会更改表单在整个场的行为,并会在您更新版本时导致表单无法具有默认模板行为。请创建自己的使用自定义表单模板的列表模板来实现自定义行为。 |
举一个例子,您可以替代所有调查列表项表单的呈现方式。位于 \12\TEMPLATE\FEATURES\SurveysList\Survey\Schema.xml 的调查列表定义使用 Template 属性将 ListForm 指定为用于显示项目表单的模板,将 SurveyForm 模板指定为用于编辑和新建项目表单。这意味着有位于 \ControlTemplates 文件夹中的、其 ID 等于 ListForm 和 SurveyForm 的控件模板,您可以通过替代这些模板来全局替换用于调查列表项表单的默认表单模板。在自定义 .ascx 文件中,定义具有相同 ID 的自定义模板,并将其放在 \CONTROLTEMPLATES 文件夹中。
注意: |
|---|
|
只能使用一个 ID 等于 ListForm 或 SurveyForm 模板,因此请谨慎地使用此可扩展性功能。不支持为自定义模板使用重复的 ID,这样可能导致不可预知的结果。 |
也可以按内容类型注册自定义表单模板。如果您拥有一种特定内容类型,可以为该内容类型声明用于替代文档库中默认使用的标准文档库表单的自定义表单。有关如何为内容类型声明自定义表单的信息,请参阅 FormTemplates 架构概述。
支持其他表单显示方式。不能从列表表单页移除现有 ListFormWebPart 控件,但是可以隐藏控件。然后,可以添加 DataFormWebPart 对象并使用 XSLT 为项呈现表单。也可以将内容类型的表单页 URL(DisplayFormUrl、EditFormUrl 或 NewFormUrl 属性)设置为将用户重定向至自定义表单页。另外,可以使用 Microsoft.SharePoint.WebControls.SPDataSource 控件将表单绑定至纯文本 ASP.NET 控件以及更新数据。
重要提示: |
|---|
|
尽管可以将 Web 部件添加到列表项的“显示”、“编辑”和“新建”表单(DispForm.aspx、EditForm.aspx 和 NewForm.aspx),但不推荐或不支持在 Windows SharePoint Services 中执行操作。支持将 Web 部件添加到列表视图页 (AllItems.aspx)。 |
This posting is provided "AS IS" with no warranties, and confers no rights.
注意:
小心:
浙公网安备 33010602011771号