Sharepoint 列表项的多个编辑窗体






4.17/5 (8投票s)
如何自定义新建或编辑表单 (NewForm.aspx 或 EditForm.aspx)。 如何为不同的项目状态创建多个自定义编辑表单。 如何通过创建自定义链接列将这些表单与列表项关联起来
引言
本文对以下方面有帮助
- 使用 Visual Studio .NET 2005/2008 扩展为 WSS 创建列表定义模板
- 使用 schema.xml 创建自定义超链接列,其中超链接将根据另一个字段的值动态构建(在这个例子中,我使用了问题状态列)
- 自定义编辑表单 (EditForm.aspx) 以及新建表单 (NewForm.aspx)
- 为不同的问题项目状态制作多个编辑表单
当您想要输入编辑项目到,例如,您的问题跟踪器列表时,SharePoint 会调用该列表的 EditForm.aspx 页面。该页面包含一个自定义的列表表单 Web 部件,该部件无法在 Web 部件内编辑,因此,为了完成此操作,我使用 SharePoint Designer 2007 工具和用于 SharePoint 列表定义模板的 Visual Studio .NET 扩展。 我还解释了如何制作不同的编辑表单,并且根据列表状态,编辑链接将重定向到不同的编辑页面。 这是执行此操作的技术。
背景
在我的 Bug 跟踪器网站在 MOSS 平台上开发期间,其中一项任务是如何为网站用户自定义问题跟踪器列表的编辑视图,并为不同的问题状态制作不同的编辑表单。 EditForm.aspx 页面包含一个列表表单 Web 部件,该部件显示与问题跟踪器列表属性关联的默认列。 第一个问题是如何自定义编辑表单,因为默认的 web 部件,第二个问题是如何根据状态制作不同的编辑视图。 最后一个问题是如何为不同的状态链接不同的编辑视图。 在其他在线文章和我的同事的帮助下,我逐个解决了这个问题。
创建和自定义 SharePoint 列表的自定义编辑/新建表单
- 在 SharePoint Designer 中打开您的站点。
- 转到您的目标列表并打开 'NewForm.aspx' 网页表单。
- 转到 文件 > 另存为... 并为表单指定一个新名称,例如 'NewForm2.aspx'。
- 从页面中删除默认的列表表单 Web 部件。
- 转到 插入 > SharePoint 控件 > 自定义列表表单。
- 在列表或文档库表单对话框中,选择合适的列表、内容类型和表单类型。
- 单击确定,将添加一个新的数据表单 Web 部件,其中包含代表列表中所有字段的控件。
- 现在,您可以根据您的需要进行自定义,例如重新排列字段。
- 保存站点。
创建列表定义模板
您必须为您要自定义的特定列表类型(任务、问题)创建列表定义项目。 在这里,我们将使用 VS.NET 扩展为 WSS 创建问题跟踪类型列表定义。
文件 > 新建 > 项目
- 从对话框中选择 Visual C#
- 选择空项目
- 确定(给项目命名为“
ListDefinitionDemo
”) - 添加新项目 (
IssueListDemo
) - 从“列表定义设置”对话框中选择问题跟踪。
- 确定。
- 构建项目。
- 如果构建成功,转到项目属性 -> 调试。
- 在“使用 URL 启动浏览器”中提供站点 URL,位于“设置操作”下。
例如 http://servername:port/websitedemo - 部署解决方案。
如果您的部署成功,那么下一步是自定义 schema.xml 文件以创建自定义列。
注意:该列表将部署在以下位置:C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES。
创建自定义超链接列
使用 Visual Studio .NET 创建解决方案后,必须在 schema.xml 中添加自定义编辑列以构建动态超链接,以便用户可以看到实际的编辑表单布局(不同的编辑页面,例如 EditPage1.aspx),具体取决于项目状态。 添加一个新的超链接列,并按以下方式构建动态 href 链接
<view url="MyItems.aspx" webpartzoneid="Main" type="HTML" baseviewid="2">
<viewfields>
<fieldref name="Attachments">
</fieldref>
. . .
<fieldref name="CustomEdit">
</fieldref>
</viewfields>
. . .
</view>
示例代码如下所示,您必须将其添加到 <!--<fields>…</fields> -->
中:使用来自 VS.NET 命令工具的 guidgen.exe 工具为字段 ID 放入新的 GUID id。
<fields>
. . .
<field id="{CEA7C7CF-238E-48c1-8DEA-F1ED2D038C0E}" name="CustomEdit"
type="Computed" hidden="FALSE" readonly="TRUE" displaceonupgrade="TRUE"
displayname="Modify" classinfo="Menu"
sourceid="http://schemas.microsoft.com/sharepoint/v3" staticname="CustomEdit"
frombasetype="TRUE">
<fieldrefs>
<fieldref name="ID">
<fieldref name="Status">
</fieldrefs>
<displaypattern>
</displaypattern>
</field>
</fields>