0

サイトが作成されたときにアクティブになる EventReciever を作成しました。このサイトにはお知らせ Web パーツがあります。「アナウンスの追加」をクリックすると、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();

    }

}

どんな種類のヒントやヘルプも大歓迎です!

4

1 に答える 1

1

あなたのWebPartはおそらく特定のリストを照会しますか?その場合、そのリストで必要な有効期限を設定するオプションもあります。

現在のコードは、サイトのExpiresサイト列のみを更新し、この列を使用してこれらの変更をリストにプッシュしません。コードの実行後に新しいリストを作成する場合は、Expiresが必要なリストがあります。

ただし、コードを読むと、実際には現在のリストとその列を含むすべての新しいリストを更新したいと思います。その場合は、をに変更する必要がありexpiredDate.Update()ますexpiredDate.Update(true)。このブール値は、変更を既存のリストにプッシュダウンすることをSharePointに示します。この更新を実行した後、既存のリストでもユーザーが有効期限を入力する必要があることがわかります。

于 2013-03-21T20:33:04.613 に答える