如何将新字段添加到自定义列表(请参阅编辑!)
-
16-10-2019 - |
题
我正在使用Microsoft模板来添加培训和课程供人们注册。一切都很好,但是我想在课程列表中添加一个字段。我想添加一个字段,以指示本课程的类型类型,例如人力资源,健康与安全,管理员等。
因此,我已经搜索了有关此答案的答案,SharePoint上的文档令人震惊,我做了以下操作:
- 设置>在课程页面上创建列。
- 输入所有必要的详细信息
- 在pexpform,editform和newform(.aspx)上添加
@fStaffType, Staff Type;
至DataFields
部分。 ((Staff Type
是字段的名称) 在PENSTFORM上添加了一个新的行以显示数据:
<tr> <td width="190px" valign="top" class="ms-formlabel"> <H3 class="ms-standardheader"> <nobr>Staff Type</nobr> </H3> </td> <td width="400px" valign="top" class="ms-formbody"> <xsl:value-of select="@fStaffType"/> </td> </tr>
在Editform和NewForm上添加了一个新的行以编辑/输入数据:
<tr> <td width="190px" valign="top" class="ms-formlabel"> <H3 class="ms-standardheader"> <nobr>Staff Type</nobr> </H3> </td> <td width="400px" valign="top" class="ms-formbody"> <SharePoint:FormField runat="server" id="ff12{$Pos}" ControlMode="New" FieldName="fStaffType" __designer:bind="{ddwrt:DataBind('i',concat('ff12',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@fStaffType')}"/> <SharePoint:FieldDescription runat="server" id="ff12description{$Pos}" FieldName="fStaffType" ControlMode="New"/> </td> </tr>
在Editform和NewForm上,我会收到错误:
错误渲染控制-FF12DESCRIPTION_1
发生了一个未经治疗的例外。你调用的对象是空的。
如果我评论说明,它将显示第一个 td
(字段名),但第二个 td
只是空。
任何帮助将不胜感激!
编辑:一个相关的问题,不知道我是否应该创建一个新问题。但是马克·德·安德森(Marc D Anderson)在下面回答,我能够添加和显示一个新领域。但是,我可以完美地添加一门新课程,但是如果我编辑一个课程,并更改员工类型字段,则将在当天和时间创建一个新课程。但是,如果对其他字段进行了编辑,它们会正确编辑。
有任何想法吗?
解决方案
许多 “神话般的40”模板 具有自定义表格。 (此时您可能会辩论名称的神话般的部分。)
看来您正在大致做正确的表格中,但是很难说出它向南行驶的位置。
当您创建新列时,您是否给它一个名称为“ fstafftype”?如果没有,那就是问题。如果您将其命名为“员工类型”,则该列的内部名称(或静态名称)为“ Staff_X0020_TYPE”。 (名称中的空间将被编码。)编辑:您可以通过进入列表设置并编辑该列来找到列的静态名称。静态名称将在URL的末尾作为查询字符串参数。根据您使用的字符,它可能会划编码,例如员工%5FX0020%5ftype。
您无需将列DisplayName和staticname添加到Diatafields部分 - 坦率地说,它并没有真正明显的目的。您只需要确保SharePoint中的列名:FormField和SharePoint:FieldDescription匹配您添加的列名的静态名称。
错误中的尾随“ _1”是SharePoint在页面中给出该列的每个实例的唯一名称的一部分(您可以通过附加$ pos变量的值来允许以相同形式的多个项目进行编辑。
其他提示
看起来FF12已经在页面中的其他地方定义了,并且可能在末尾用_1重写。
- 您可以尝试从数据源拖放字段,然后让设计人员找出字段名称吗?
或者
- 您可以尝试在另一个页面中添加“自定义编辑表单”,然后复制fieldDescription?
我可能没有读过或不掌握您的需求。为什么不实施内容类型?您可以为您的自定义字段(又称列)进行功能,并设置属性,例如编辑form = true上的文凭,在view = true(等)上显示