在站点上查找特定字段,并在EventReciever中将其设置为“必需”

时间:2013-03-21 10:29:48

标签: sharepoint

我创建了一个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();

    }

}

赞赏任何提示或帮助!

1 个答案:

答案 0 :(得分:1)

您的WebPart可能会查询特定列表?在这种情况下,它也可以选择在该列表中设置Expires。

您当前的代码只会更新网站中的Expires网站列,不会使用此列将这些更改推送到列表中。如果您在执行代码后创建新列表,则会有一个需要过期的列表。

但是,通过阅读您的代码,我的猜测是您实际上想要更新当前列表以及包含该列的所有新列表。在这种情况下,您应该将expiredDate.Update()修改为expiredDate.Update(true)。此布尔值表示您希望将更改下推到现有列表。执行此更新后,您将看到现有列表还要求用户填写过期日期。