我已经创建了一个EventReciever,它将在创建站点时激活。此站点有一个公告webpart部件。当他们点击“添加公告”时,newform.aspx会弹出一个对话框,其中有一个名为Expired的字段,我需要将其设置为必填字段,因此必须使用该字段,否则会阻止用户添加公告。
如何在EventReciever中找到该特定字段并将其设置为Required?
<!-- 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();
}
}任何类型的提示或帮助都是非常感谢的!
发布于 2013-03-22 04:33:05
你的WebPart可能会查询一个特定的列表?在这种情况下,也可以在该列表上设置Expires的required。
您当前的代码将仅更新网站中的“过期网站”列,而不会将这些更改推送到使用此列的列表中。如果您要在执行代码后创建一个新列表,那么您将拥有一个需要Expires的列表。
但是,通过阅读您的代码,我猜测您实际上希望更新当前列表和包含该列的所有新列表。在这种情况下,您应该将expiredDate.Update()修改为expiredDate.Update(true)。这个布尔值是对SharePoint的指示,表明您希望将更改下推到现有列表。执行此更新后,您将看到现有列表还要求用户填写过期日期。
https://stackoverflow.com/questions/15544970
复制相似问题