我在SharePoint网站中有一个讨论板,其中有一个名为Category的附加列。创建新讨论时,它会提示输入Category,当然这是设计的。
问题是,当回复讨论时,它会再次提示输入类别。
如何分隔回复功能,以便不提示类别,并将类别设置为它所在的讨论的类别?
我尝试在SharePoint Designer中编辑NewForm.aspx的副本,但您只能编辑它正在使用的WebPart,而不是显示哪些字段。
答案 0 :(得分:2)
在SharePoint讨论板中,有两种不同的内容类型:讨论和消息。 Discussion是代表整个讨论主题的文件夹,而Message是针对该文件夹中的每个回复项目。
要使类别仅适用于讨论,而不是仅将字段添加到列表中,请将其专门添加到该板的讨论内容类型,并确保它未添加到消息内容类型中(将其删除如果是的话。
如果你想在所有回复中实际拥有Category字段并且它具有与父讨论相同的值,那么不幸的是你必须有点棘手并使用一些事件处理程序。如果您还不熟悉它们,请阅读this article以获取基本示例。您需要创建“ItemAdding”或“ItemAdded”事件并将其附加到讨论板。此事件接收者应首先检查所添加的项目是消息还是讨论(item.ContentType.Name.Equals("Message")
)。然后,检索父母;消息父节点的ID存储在显示名称为“父文件夹ID”的字段中。检索父类的Category的值,然后设置Message的Category的值以匹配它。最后一步,要使“编辑表单”中未显示“消息内容类型”上的“类别”字段,您需要将该讨论板上该内容类型上该字段的“ShowInEditForm”属性翻转为“false”。您可以使用简单的list.ContentTypes["Message"].Fields["Category"].ShowInEditForm = false;
在对象模型中完成此操作,其中list
是您的讨论板实例。