そこで、SharePoint 2010 リストでこの種の機能を実現しようとしています。
リストにタイプ選択のフィールドがあり、7 つの値があり、ユーザーがそのフィールドの値を値 2、3、4、5、6、7 から値 1 に変更できないようにします。
そのリストのイベント レシーバーを作成しました。コードは次のとおりです。
public override void ItemUpdated(SPItemEventProperties properties)
{
base.ItemUpdated(properties);
string beforeStatus = properties.BeforeProperties["Status"].ToString();
string afterStatus = properties.AfterProperties["Status"].ToString();
if (beforeStatus != "1stValue" && afterStatus == "1stValue")
{
properties.Cancel = true;
properties.ErrorMessage = "This isn't allowed.";
}
}
ItemUpdated
とイベントレシーバーの両方を使用してみました。ItemUpdating
デバッグ中に、イベントレシーバーが本来あるべきように呼び出されるのを見ましたがbeforeStatus
、どちらの場合もアイテムからafterStatus
取得しています。null
では、正しく更新する前後の項目のフィールドの値を取得するにはどうすればよいでしょうか? 前もって感謝します!
注: フィールドの内部名と表示名は両方ともStatus
.