我创建了一个EventReciever,它将在创建网站时激活。这个网站有一个宣布webpart。当他们点击“添加公告”时,newform.aspx会弹出一个对话框,并且那里有一个名为Expired的字段我需要使其成为必需字段,因此必须使用该字段,否则会阻止用户添加公告。
如何在EventReciever中找到该特定字段并将其设置为必需?
<!-- FieldName="Expires"
FieldInternalName="Expires"
FieldType="SPFieldDateTime"
-->
这是我迄今为止取得的进展:
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
if (properties.Feature.Parent is SPWeb)
{
var web = properties.Feature.Parent as SPWeb;
var expiredDate = web.Fields.GetFieldByInternalName("Expires");
expiredDate.Required = true;
expiredDate.Update();
}
}
赞赏任何提示或帮助!
答案 0 :(得分:1)
您的WebPart可能会查询特定列表?在这种情况下,它也可以选择在该列表中设置Expires。
您当前的代码只会更新网站中的Expires网站列,不会使用此列将这些更改推送到列表中。如果您在执行代码后创建新列表,则会有一个需要过期的列表。
但是,通过阅读您的代码,我的猜测是您实际上想要更新当前列表以及包含该列的所有新列表。在这种情况下,您应该将expiredDate.Update()
修改为expiredDate.Update(true)
。此布尔值表示您希望将更改下推到现有列表。执行此更新后,您将看到现有列表还要求用户填写过期日期。