在“编辑”和“创建”模式下隐藏SharePoint自定义字段类型

时间:2009-05-19 11:09:02

标签: sharepoint moss wss sharepoint-2007

我正在尝试在SharePoint中创建自定义字段类型。

此控件的值根据同一列表中的其他字段设置。 由于此要求,此字段应仅在显示模式下显示,而不是在编辑或创建模式下显示。

我如何确保这一点?

如果我只是将ASCX控件编码为不渲染字段,则该字段将在编辑和创建模式下显示如下。

alt text http://www.mannsoftware.com/blog/Lists/Photos/121308_0204_CrossSiteLo6.png

5 个答案:

答案 0 :(得分:1)

通常,您将SPField.ReadOnlyField属性设置为True可以为任何字段实现所需的行为。 (不要忘记SPField.Update!)我相信列表定义有一个等效的CAML属性。

也就是说,在从BaseFieldControl派生的控件类中,您可能只是重写RenderFieldForInput()方法而不调用基本实现以确保在Create或Edit期间不呈现任何内容。但是,这仍然会在表单中呈现字段的表行,这可能不是您想要的。因此,要强制执行所需的行为,请使用ReadOnlyField并覆盖SPField(非字段控件)类中的Update()以始终将其设置为True。

答案 1 :(得分:0)

通过转到Advanced的{​​{1}}部分,将List Settings设置为Allow management of content types?,可能更容易在逐个列表的基础上进行更改,然后修改您的内容类型,将您的字段值更改为“Yes”。

答案 2 :(得分:0)

看一下这篇博客文章。我想它会给你一些想法。该概念使用基于模式的不同渲染模板。

http://sharepoint.nailhead.net/2008/04/creating-rendering-template-that.html

答案 3 :(得分:0)

您是否尝试将字段设置为隐藏? http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.hidden.aspx

新项目和编辑项目(NewForm.aspx和EditForm.aspx)的自定义FORMS页面将是实现此目的的另一种方式。

答案 4 :(得分:0)

设置ShowInEditForm和ShowInNewForm属性为我解决了这个问题。