我正在尝试在 SharePoint 中创建自定义字段类型。
此控件的值基于同一列表中的另一个字段设置。由于此要求,此字段应仅在显示模式下显示,而不应在编辑或创建模式下显示。
我如何确保这一点?
如果我只是将 ASCX 控件编码为不呈现字段,则该字段将在“编辑和创建”模式下显示为这样。
替代文字 http://www.mannsoftware.com/blog/Lists/Photos/121308_0204_CrossSiteLo6.png
我正在尝试在 SharePoint 中创建自定义字段类型。
此控件的值基于同一列表中的另一个字段设置。由于此要求,此字段应仅在显示模式下显示,而不应在编辑或创建模式下显示。
我如何确保这一点?
如果我只是将 ASCX 控件编码为不呈现字段,则该字段将在“编辑和创建”模式下显示为这样。
替代文字 http://www.mannsoftware.com/blog/Lists/Photos/121308_0204_CrossSiteLo6.png
通常,您将 SPField.ReadOnlyField 属性设置为 True 以实现任何字段的所需行为。(不要忘记相应地进行 SPField.Update!)我相信列表定义有一个等效的 CAML 属性。
也就是说,在派生自 BaseFieldControl 的控件类中,您可能只是重写 RenderFieldForInput() 方法而不调用基本实现以确保在创建或编辑期间不呈现任何内容。但是,这仍然会在表单中呈现字段的表格行,这可能不是您想要的。因此,要强制执行所需的行为,请在您的 SPField(不是字段控件)类中使用 ReadOnlyField 并覆盖 Update() 以始终将其设置为 True。
Advanced
通过转到 的部分List Settings
,设置Allow management of content types?
为Yes
,然后编辑您的内容类型以将字段的值更改为“ ”,逐个列表地更改它可能会更容易hidden
。
看看这篇博文。我想它会给你一些想法。该概念根据模式使用不同的渲染模板。
http://sharepoint.nailhead.net/2008/04/creating-rendering-template-that.html
您是否尝试将字段设置为隐藏? http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.hidden.aspx
新项目和编辑项目(NewForm.aspx 和 EditForm.aspx)的自定义表单页面将是实现此目的的另一种方法。
设置 ShowInEditForm 和 ShowInNewForm 属性为我解决了这个问题。