我想修改与内容类型相关联的列表字段的“必需”属性。 我已经修改了列表的内容类型和架构,但“必需”仍然设置为true,我希望它是可选的。
有什么想法吗?
感谢名单
答案 0 :(得分:2)
试试这样:
private void SetFieldRequired(SPList list, string field, string contentType, bool required)
{
SPField fieldInList = list.Fields[field];
fieldInList.Required = required;
fieldInList.Update();
SPField fieldInContentType = list.ContentTypes[contentType].Fields[field];
fieldInContentType.Required = required;
fieldInContentType.Update();
}
不要忘记添加一些异常处理。
答案 1 :(得分:1)
如果您以编程方式(使用XML文件)创建了列表和内容类型,则有一些地方需要进行更改:
您似乎已正确完成了这些事情。但是,列表的schema.xml仅在创建列表时使用。因此,如果您更改了schema.xml并对其进行了部署,但没有删除并重新创建列表,那么您的更改将无效。
编辑:
如果您无法删除并重新创建列表,则必须编写将以编程方式(通过功能或等效功能)执行此操作的代码。这样就可以了:
using (SPSite site = new SPSite("http://yoursite"))
{
using (SPWeb web = site.RootWeb)
{
SPList list = web.Lists.TryGetList("Your List");
if (list != null)
{
SPField fld = list.Fields[SPBuiltInFieldId.RequiredField];
fld.Required = false;
fld.Update();
}
}
}